【问题标题】:Fake global jQuery with browserify-shim? (Cannot find module 'jquery')用 browserify-shim 伪造全局 jQuery? (找不到模块'jquery')
【发布时间】:2015-10-05 21:38:59
【问题描述】:

我在 Browserify 中遇到了一个关于 jQuery 插件的令人费解的问题。由于我有多个单独的子应用程序包,因此我的 HTML 中有一些全局库作为 <script> 标记以防止重复。

我正在使用 gulpbrowserify-shimbabelify 创建我的捆绑包。

package.json内:

"dependencies": {
  "jquery.cookie": "^1.4.1",
  ...
},
"browserify-shim": {
  "jquery": "global:jQuery",
   ...
},
"browserify": {
  "transform": [
    "browserify-shim"
  ]
}

base.html 内:(在生产中这些将是 CDN 链接)

<!--[if lt IE 9]><script src="/bower_components/jquery-legacy/jquery.min.js"></script><![endif]-->
<!--[if gte IE 9]><!-->
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<!--<![endif]-->

在我的一个源文件中:

import $ from 'jquery'; // this works
import 'jquery.cookie'; // this crashes browserify

错误信息:

Error: Cannot find module 'jquery' from '/path/to/node_modules/jquery.cookie'

jQuery 是 not 与 npm 一起安装的,因为我不希望它滚到我的包中。

我猜这里的问题是jquery.cookie.js 中有一个呼叫require('jquery') 没有得到解决。

如何使用 browserify-shim 将全局 jQuery 实例的存在“伪造”为插件?


注意:This solution 不能满足我的需求,因为 jQuery 会被打包成许多包。

【问题讨论】:

    标签: jquery browserify jquery-cookie browserify-shim


    【解决方案1】:

    解决了。 This solution 似乎工作得很好。

    作为参考,这是我 Gulpfile 中的(固定)watchify 调用:

    var b = browserify({
        entries: [app.input_dir + app.entry],
        debug: true,
        cache: {},
        packageCache: {},
        fullPaths: true
    })
        .transform(babelify)
        .transform({
            global: true
        }, 'browserify-shim')
        .plugin('minifyify', {
            map: app.output_dir + app.entry + '.map',
            output: app.output_dir + app.entry + '.map'
        });
    
    var watcher = watchify(b);
    

    【讨论】:

    • 在命令行(或 npm 运行脚本)上,这将是:browserify -t [ browserify-shim --global ] index.js(需要 package.json 中的 "browserify-shim": { ... } 条目)。
    • @azz @smhg 谢谢你。你知道--global 标志记录在哪里吗?这对我有用,但我在文档 herehere 中找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2016-04-20
    • 2015-01-18
    • 2017-11-09
    相关资源
    最近更新 更多