我正在尝试使用链接库(一个 sigma fork),它提供了一个"main": "dist/sigma.require.js"
(在package.json
. 这让我可以这样做:
var sigma = require('linkurious');
但是,插件不包括在内,所以我必须单独要求它们。问题是插件依赖于sigma
全局范围内可用的变量。因此,我将以下内容(来自package.json
)进行了填充:
"browser": {
"sigma": "./node_modules/linkurious/dist/sigma.js",
"linkurious/plugins": "./node_modules/linkurious/dist/plugins.js"
},
"browserify-shim": {
"sigma": {"exports": "sigma"},
"linkurious/plugins": { "depends": [ "sigma" ] }
},
"browserify": {
"transform": [ "browserify-shim" ]
},
其中,当在浏览器中运行时,在包含插件期间不会产生错误(我认为这意味着全局变量可用)但对插件的引用失败(好像它们未能自行附加,或将自己附加到非全局变量)。
我正在使用 grunt-browserify 运行我这样配置的进程(来自Gruntfile.js
):
grunt.initConfig({
browserify: {
libs: {
files: { 'inc.js': ['index.js'] },
},
}
});
我已经在这个问题上附加了一个小项目,用最少的代码来演示这个问题,希望其他人可以复制/解决这个问题。解压,键入npm install; npm start
并运行浏览器http://localhost:8002/
以查看问题。
提前致谢,
埃基斯
- 编辑我 -
顺便说一句,git repo 上的 bentrucker(参见:https ://github.com/thlorenz/browserify-shim/issues/215 )建议我需要进行全局转换。有人向我解释说,匀场对文件不起作用node_modules
,对于那些我需要全局转换的文件。这对我来说没有多大意义,因为填充的全部意义在于您不拥有正在填充的代码。无论如何,bendrucker 向我指出了另一个 SO 帖子,其中提出了问题但没有提供答案。
帮助?