首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用browserify对npm模块执行转换

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

Stack Overflow用户
提问于 2013-04-20 01:56:32
回答 2查看 6.7K关注 0票数 18

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

我做了一个简单的github存储库,演示了它的here。被浏览器序列化的index.js文件如下所示:

代码语言:javascript
运行
复制
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看起来像这样:

代码语言:javascript
运行
复制
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的结果:

代码语言:javascript
运行
复制
;(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])
;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-20 05:20:40

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

代码语言:javascript
运行
复制
{
    "name":"testmodule",
    "version":"0.0.0",
    "browserify": {
        "transform": ["brfs"]
    },
    "main": "index.js"
}
票数 24
EN

Stack Overflow用户

发布于 2016-10-20 05:57:00

您也可以使用browserify -g brfs而不是browserify -t brfsg是一个全局转换(适用于依赖项)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16110750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档