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

标签 javascript browserify browserify-shim

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

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

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

问题是我正在使用一些 jQuery 插件,它们在内部执行 require('jquery') 并且由于 browserify 转换不适用于依赖项的依赖性,这导致 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,但我不想这样做,因为这意味着每次我添加了一个新插件,我将不得不重复相同的过程。

有什么办法可以缓解上述问题吗?

最佳答案

您应该能够通过提供带有散列选项的转换来应用全局转换:

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

关于javascript - 允许使用 grunt browserify 进行全局转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228943/

相关文章:

javascript - 从全局浏览器范围访问 CommonJS 库中定义的变量

Browserify - 如何包含非公开购买的第三方脚本

javascript - 圆 Angular IE 和背景图像

javascript - 如何使用 HTML 读取 JSON 文件?

javascript - 从 require() 文件访问函数

modernizr - 如何需要 Modernizr 3.x 模块?

javascript - 如何使用 browserify-shim 正确地填充 jquery/Backbone

javascript - 使用 JS 获取复选框值

javascript - 有没有办法使用任何元素作为 Canvas ?

javascript - 在 Gruntfile.js 中使用 grunt-browserify