我有一个Angular
应用,我使用browserify
来管理我的依赖项。我也在使用momentjs
来操作所有时间。我有几个模块,我使用browserify
来构建,但即使我使用momentjs
命令,它也不止一次地引入external
。这是我的代码。首先,我有一个包含所有共享库的基本模块:
require('angular');
require('angular-route');
require('moment');
以下是我在browserify
中使用gulpfile.js
的代码:
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
目录时,momentjs
和donor-libs.js
都有history-module.js
。为什么我没有在momentjs
donor-libs.js
中认出我已经需要external
?我需要做什么才能一次只需要第三方库?关于{{1}}命令,我不明白什么?
答案 0 :(得分:0)
多次提取lib的原因是external
命令被不正确地使用。 external
期待external
化的路径或路径数组。 external
不会查看js
文件并找到require
d文件,然后不将其拉入其他模块。代码应该看起来像这样
.external('angular', 'angular-route', 'moment')
或require
d lib的路径。这会外化这些文件并修复了多次拉出lib的问题。