看看 cmets,答案似乎是肯定的 - 需要手动工作才能将您的组件分发到您的 public 文件夹。使用 gulp 将使其自动化,但基本上一开始它会是偶然的,需要一些微调。如果有人遇到这个问题,这是我采用的解决方案:
1) 在 bower.json 文件中提供包覆盖,以确保仅公开缩小的文件:
{
"name": "charlie",
"dependencies": {
"bootstrap-material-design": "~0.3.0"
},
"overrides": {
"bootstrap-material-design": {
"main": ["**/dist/js/*.min.js", "**/dist/css/*.min.css", "**/dist/fonts/*"]
},
"jquery": {
"main": "**/dist/jquery.min.js"
}
}
}
2) 使用main-bower-files gulp 包来获取这些“主电源”并将它们分发到最终位置。这是我的 gulpfile.json(只是凉亭部分:
var bower = require('main-bower-files');
var gulpFilter = require('gulp-filter');
var uglify = require('gulp-uglify');
var minifyCSS = require('gulp-minify-css');
var clean = require('gulp-clean');
var debug = require('gulp-debug');
var getDist = function(vendor) {
var publicDir = 'public';
var dist = vendor ? publicDir + '/vendor' : publicDir;
return {
dir: dist,
css: dist + '/css/',
js: dist + '/js/',
fonts: dist + '/fonts/'
};
};
gulp.task('cleanVendor', function() {
return gulp.src(getDist(true).dir, {read: false})
.pipe(clean());
});
gulp.task('bower', ['cleanVendor'], function() {
var dist = getDist(true);
var jsFilter = gulpFilter('**/*.js');
var cssFilter = gulpFilter('**/*.css');
var fontsFilter = gulpFilter(['**/*.woff*', '**/*.eot', '**/*.svg', '**/*.ttf']);
return gulp.src(bower())
.pipe(fontsFilter)
.pipe(gulp.dest(dist.fonts))
.pipe(fontsFilter.restore())
.pipe(jsFilter)
.pipe(gulp.dest(dist.js))
.pipe(jsFilter.restore())
.pipe(cssFilter)
.pipe(gulp.dest(dist.css))
.pipe(cssFilter.restore());
});
3) 在您的 HTML 文件中,包含 /vendor/js/blah.min.js 或 /vendor/css/blah.min.css
注意:烦人的部分是我必须在fontsFilter 中指定每个字体扩展名。我尝试使用'**/fonts/*' 但main-bower-files 返回一个平面文件列表,如果您提供{base: 'mybase'} 参数,它会返回一个树,这意味着您可以获得每个文件的整个树结构 - 任何可以提出修复的人, 受邀提交答案。