我尝试创建一个简单的gulp任务,获取所有bower.json依赖项并将它们注入我的index.html文件。
这就是我的gulpfile.js的样子:
var gulp = require('gulp');
var bowerFiles = require('main-bower-files');
var inject = require('gulp-inject');
gulp.task('default', function() {
gulp.src('./public/index.html')
.pipe(inject(gulp.src(bowerFiles({
paths: {
bowerDirectory: './public/bower_components',
bowerJson: './public/bower.json'
}
}), {read: false}), {name: 'bower'}))
.pipe(gulp.dest('./build'));
});
并且有效。这就是我的index.html在./build目录下的样子:
<!-- bower:js -->
<script src="/public/bower_components/zepto/zepto.js"></script>
<!-- endinject -->
但是,我无法使主要文件夹文件来抓取我的缩小的依赖项(在此示例中,包含&#39; /public/bower_components/zepto/zepto.min.js')
我尝试过这种覆盖选项:
{
"overrides": {
"BOWER-PACKAGE": {
"main": "**/*.min.js"
}
}
}
和此:
{
"overrides": {
"BOWER-PACKAGE": {
"main": {
"development": "*.js",
"production": "*.min.js",
}
}
}
}
它并没有奏效:(
我做错了什么?
提前致谢!!
答案 0 :(得分:10)
有两种解决方案 首先,您可以使用bower-main来区分缩小文件和非缩小文件。
另一种选择是直接处理main-bower-files返回的列表并检查缩小文件的存在。此代码段在文件路径存在时用缩小的等效项替换文件路径。
var mainBowerFiles = require('main-bower-files');
var exists = require('path-exists').sync;
var bowerWithMin = mainBowerFiles().map( function(path, index, arr) {
var newPath = path.replace(/.([^.]+)$/g, '.min.$1');
return exists( newPath ) ? newPath : path;
});
有关完整的Gulp任务,请参阅this gist。
答案 1 :(得分:9)
您需要指定要覆盖的包的名称,BOWER-PACKAGE
此处是要替换的文本。你不想覆盖所有的依赖关系,这就是为什么它会被依赖所覆盖。
所以将 bower.json 更改为:
{
"overrides": {
"zepto": {
"main": "zepto.min.js"
}
}
}