【问题标题】:Why is browserify pulling in a lib 2 times? - Browserify为什么 browserify 拉入一个库 2 次? - 浏览器化
【发布时间】:2014-07-22 18:02:21
【问题描述】:

我有一个Angular 应用程序,我使用browserify 来管理我的依赖项。我也在使用momentjs 来完成我所有的时间操作。我有几个模块正在使用browserify 构建,但它不止一次地拉入momentjs,即使我使用external 命令也是如此。这是我的代码。首先,我有一个包含我所有共享库的基本模块:

require('angular');
require('angular-route');
require('moment');

这是我在gulpfile.js 中用于browserify 的代码:

browserify().require('./js/donor/donor-libs.js')
    .bundle()
    .pipe(source('donor-libs.js'))
    .pipe(gulp.dest('./build'));

这构建得很好,并且具有我期望的库,包括 momentjs

现在我去构建一个依赖于这个模块的模块。 momentjs 在本模块中使用。这是我用来构建模块的代码:

    browserify().require('./js/donor/history-module.js')
        .external('./js/donor/donor-libs.js')
        .bundle()
        .pipe(source(filename))
        .pipe(gulp.dest('./build'));

现在,当我查看 build 目录时,momentjsdonor-libs.jshistory-module.js 中都有。为什么它没有识别出我在momentjs 中已经在我的donor-libs.js 中需要?我需要做些什么才能只在第 3 方库中需要一次?我对external 命令有什么不明白的地方?

【问题讨论】:

    标签: browserify


    【解决方案1】:

    多次拉入库的原因是external 命令使用不当。 external 期望一个路径或一组路径将 externalized。 external 不会浏览 js 文件并找到 required 文件,然后不会将它们拉入其他模块。代码应该是这样的

    .external('angular', 'angular-route', 'moment')
    

    required 库的路径。这将外部化这些文件并解决了一个库被多次拉入的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2017-06-29
      • 2016-09-14
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多