我正在尝试使用linkurious库(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/
运行浏览器以查看问题。
提前感谢,
ekkis
- 编辑I -
顺便说一下,git repo上的bendrucker(参见:https://github.com/thlorenz/browserify-shim/issues/215)表明我需要进行全局转换。有人向我解释过,填充对node_modules
文件不起作用,对于那些需要全局变换的文件。这对我来说没有多大意义,因为匀场的重点在于你没有拥有你正在填补的代码。在任何情况下,bendrucker都会向this other SO post指出我提出的问题,但没有提供答案。
帮助?