gpt4 book ai didi

javascript - 如何使用 browserify 对 npm 模块执行转换

转载 作者:可可西里 更新时间:2023-11-01 01:17:32 28 4
gpt4 key购买 nike

默认情况下,browserify 不会对包含在 node_modules 中的模块执行转换,即没有路径。

我制作了一个快速的 github 存储库来说明它 here .浏览器化的 index.js 文件如下所示:

var fs = require('fs');
var testmodule = require('testmodule');
var trg1 = document.getElementById("target1");
var trg2 = document.getElementById("target2");
trg1.innerHTML = fs.readFileSync(__dirname+"/something.txt");
trg2.innerHTML = testmodule();

testmodule 看起来像这样:

var fs = require('fs');
exports = module.exports = function() {
return fs.readFileSync(__dirname+'/data.txt');
}

使用 brfs 转换模块,我希望能够内联对 fs.readFileSync 的两个调用,但是当我运行 browserify index.js -t brfs -o bundle.js,只有我的主项目中的调用被内联。这是 bundle.js 结果:

;(function(e,t,n){function r(n,i){if(!t[n]){if(!e[n]){var s=typeof require=="function"&&require;if(!i&&s)return s(n,!0);throw new Error("Cannot find module '"+n+"'")}var o=t[n]={exports:{}};e[n][0](function(t){var i=e[n][1][t];return r(i?i:t)},o,o.exports)}return t[n].exports}for(var i=0;i<n.length;i++)r(n[i]);return r})({1:[function(require,module,exports){
// nothing to see here... no file methods for the browser

},{}],2:[function(require,module,exports){
var fs = require('fs');
var testmodule = require('testmodule');
var trg1 = document.getElementById("target1");
var trg2 = document.getElementById("target2");
trg1.innerHTML = "This is data from a file in the main project folder"; // TRANSFORMED
trg2.innerHTML = testmodule();
},{"fs":1,"testmodule":3}],3:[function(require,module,exports){
(function(__dirname){var fs = require('fs');
exports = module.exports = function() {
return fs.readFileSync(__dirname+'/data.txt'); // NO TRANSFORM
}
})("/node_modules/testmodule")
},{"fs":1}]},{},[2])
;

最佳答案

在这方面得到了 substack(browserify 的作者)的帮助。要指定项目外的模块是否需要转换,您需要在 package.json 中指定一个 browserify.transform 数组。因此,对于我上面给出的示例,testmodule 目录中的 package.json 文件如下所示:

{
"name":"testmodule",
"version":"0.0.0",
"browserify": {
"transform": ["brfs"]
},
"main": "index.js"
}

关于javascript - 如何使用 browserify 对 npm 模块执行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16110750/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com