允许使用grunt browserify进行全局转换

时间:2016-02-05 16:27:59

标签: javascript browserify browserify-shim

我已在我的html文件中添加了jQuery作为脚本标记,并已将其添加到package.json以便使用browserify-shim,如下所示:

  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },
  "browserify-shim": {
    "jquery": "global:jQuery"
  },

我可以通过简单的require('jquery')调用在我的主脚本文件中公开它。

问题在于我使用了一些内部执行require('jquery')的jQuery插件,并且由于browserify转换不适用于依赖项的依赖性,因此导致浏览器投诉捆绑,因为它找不到jQuery

现在我知道我可以通过应用全局变换来解决它,因为我无法轻易找到方法。

Browserify文档说您无法在包文件中应用全局转换,因此以下内容无法正常工作(我认为会这样做):

  "browserify": {
    "global-transform": [
      "browserify-shim"
    ]
  },

  "browserify": {
    "transform": [
      "browserify-shim"
    ],
    "global": true
  },

我还尝试将该选项添加到我的Gruntfile.js,如下所示,但即使这样也无效:

browserify: {
        options: {
            global: true
        },
        dist: {
            files: {
                'js/bundle.js': 'js/script.js'
            }
        },
    },

最后一个选项是为每个依赖关系browserify-shim手动添加package.json,但我不想这样做,因为这意味着每次我添加新的插件,我将不得不重复相同的过程。

有任何缓解上述问题的想法吗?

1 个答案:

答案 0 :(得分:2)

您应该能够通过使用哈希选项提供转换来应用全局转换:

 "browserify": {
   "transform": [
     ["browserify-shim", {global: true}]
   ]
 }