我有一个使用browserify管理依赖项的Angular应用程序。我也在使用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目录时,在donor-libs.js和我的history-module.js中都有momentjs。为什么它不能识别出我的donor-libs.js中已经有了momentjs所需的?我需要做什么才能只需要在第三方库中使用一次?我对external命令有什么不理解的地方?
发布于 2014-07-24 01:30:08
库被多次拉取的原因是external命令使用不当。external需要external化的路径或路径数组。external不会查看js文件并找到required文件,然后不会在其他模块中提取它们。代码应该看起来像这样
.external('angular', 'angular-route', 'moment')或required库的路径。这将使这些文件外部化,并解决库被多次拉入的问题。
https://stackoverflow.com/questions/24894569
复制相似问题