部署我的应用程序时,我想将bower依赖项复制到deploy
目录,并将这些文件的链接注入同样位于index.html
目录中的deploy
。
由于我无法将它们组合起来,所以每一步都是完美的。
复制文件:
return gulp.src(mainBowerFiles(), { read: false })
.pipe(gulp.dest('./deploy/lib/'));
注入文件:
return gulp.src('./deploy/index.html')
.pipe(plugins.inject(
gulp.src(mainBowerFiles(), { read: false }), { relative: true }))
.pipe(gulp.dest('./deploy/'));
我认为我应该一步到位,以保持相关文件的正确顺序。
我尝试了这种组合,但没有成功。
return gulp.src('./deploy/index.html')
.pipe(plugins.inject(
gulp.src(mainBowerFiles(), { read: false })
.pipe(gulp.dest('./deploy/lib/'), { relative: true })))
.pipe(gulp.dest('./deploy/'));
答案 0 :(得分:13)
我建议wiredep:
您在html中添加了一个块:
<html>
<head>
</head>
<body>
<!-- bower:js -->
<!-- endbower -->
</body>
</html>
你的wiredep任务如下:
// inject bower components
gulp.task('wiredep', function () {
var wiredep = require('wiredep').stream;
gulp.src('app/*.html')
.pipe(wiredep())
.pipe(gulp.dest('app'));
});
这会将deps添加到你的html中:
<html>
<head>
</head>
<body>
<!-- bower:js -->
<script src="bower_components/foo/bar.js"></script>
<!-- endbower -->
</body>
</html>
然后,您可以将其与useref结合使用,以订购所有项目的javascript依赖项
html块
<!-- build:js scripts/app.js -->
<!-- bower:js -->
<script src="bower_components/foo/bar.js"></script>
<!-- endbower -->
<script src="js/yourcustomscript.js"></script>
<!-- endbuild -->
gulp任务
gulp.task('html', ['styles'], function () {
var assets = $.useref.assets({searchPath: '{.tmp,app}'});
return gulp.src('app/*.html')
.pipe(assets)
.pipe(assets.restore())
.pipe($.useref())
.pipe(gulp.dest('dist'));
});
看看generator-gulp-webapp如何做事:https://github.com/yeoman/generator-gulp-webapp
注意:$.plugin
语法假定var $ = require('gulp-load-plugins')();