在browserify中需要cdn库而不将其捆绑在最终的js文件中

pra*_*bir 37 node.js browserify gruntjs

如果我有一个从cdn下拉的库并且不希望它成为最终js文件的一部分但是能够使用browserify要求它,我该如何解决它?

以下是我目前使用alias和shim文件解决它的方法.

browserify: {
    options: {
        debug: true,
        transform: [ 'reactify' ],
        alias: [
            'client/shims/jquery.js:jquery'
        ]
    },
    app: {
        src:  'client/app.js',
        dest: 'public/app.js'
    }
}
Run Code Online (Sandbox Code Playgroud)

这是client/shims/jquery.js我所说的shim文件,jquery所以我可以使用require('jquery')而不是完整路径.

module.exports = $;
Run Code Online (Sandbox Code Playgroud)

grunt-browserify中是否有一个快捷方式来支持这种情况?我想知道是否可以在Gruntfile.js中定义它而不创建shim文件.

添加external: [ 'jquery' ]似乎完全忽略它并且不起作用.

sil*_*min 27

使用browserify-shim, 您可以在package.json文件中添加:

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

  "browserify-shim": {
    "jquery": "global:$"
  }
Run Code Online (Sandbox Code Playgroud)

然后jquery将在您的模块中通过 require('jquery')

  • 那些需要jquery的第三方模块呢?似乎browserify-shim没有用全局变量替换那些需求,无论如何要做到这一点? (15认同)