我在一个项目中使用了褐变和褐变-shim,通过吞咽-褐变贯穿整个过程.
gulp.src(['./resources/js/main.js'])
.pipe(browserify({
shim: {
angular: {
path: './node_modules/angular/angular.js',
exports: 'angular'
},
'angular-animate': {
path: './node_modules/angular-animate/angular-animate.js',
exports: 'ngAnimate',
depends: {
angular: 'angular',
jQuery: 'jQuery'
}
},
[...]
}
}))
.pipe(concat('app.js'))
.pipe(gulp.dest('./web/js'));
这一设置工作良好,并在大多数部分,如预期的。但是,Browserify始终包括构建中的所有闪烁库,即使none是由()调用的。
关于这个主题的文档似乎不存在。有什么办法可以防止这种情况发生吗?这似乎非常违背直觉,在我看来,构建应该只包含我实际需要的内容。
(更新:我使用napa/npm安装了角和其他库)
发布于 2014-02-18 06:44:57
当您使用Browserify时,它使这些库(特别是您告诉它“导出”的对象)成为全局库。传统的做法是仍然对这些库使用require()
,但是,这样做只是最好的实践,这样如果库接下来要转换为module.exports
,那么您就不必替换代码中的全局引用。另外,最好以良好的节点形式列出顶部所需的所有文件。:)
因此,为了回答您的问题,通过刷新这些库,您已经告诉browserify将它们作为全局变量包括进来,以便它们可以在任何地方使用,因此不管您是否require()
它们,它们都会自动地包含在构建中。
如果您想要包括一些而不是其他基于gulp.env
之类的东西,您可以尝试分别构建options对象并将其传递到browserify函数中。
https://stackoverflow.com/questions/21828772
复制