1

我正在尝试使用链接库(一个 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/以查看问题。

提前致谢,

埃基斯

西格玛.zip

- 编辑我 -

顺便说一句,git repo 上的 bentrucker(参见:https ://github.com/thlorenz/browserify-shim/issues/215 )建议我需要进行全局转换。有人向我解释说,匀场对文件不起作用node_modules,对于那些我需要全局转换的文件。这对我来说没有多大意义,因为填充的全部意义在于您不拥有正在填充的代码。无论如何,bendrucker 向我指出了另一个 SO 帖子,其中提出了问题但没有提供答案。

帮助?

4

0 回答 0