shimming linkurious - 如何配置?

时间:2016-08-05 06:23:23

标签: node.js browserify browserify-shim grunt-browserify linkurious

我正在尝试使用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

sigma.zip

- 编辑I -

顺便说一下,git repo上的bendrucker(参见:https://github.com/thlorenz/browserify-shim/issues/215)表明我需要进行全局转换。有人向我解释过,填充对node_modules文件不起作用,对于那些需要全局变换的文件。这对我来说没有多大意义,因为匀场的重点在于你没有拥有你正在填补的代码。在任何情况下,bendrucker都会向this other SO post指出我提出的问题,但没有提供答案。

帮助?

0 个答案:

没有答案