joe*_*oel 10 javascript client-side dependency-management bower gulp
我一直在努力弄清楚如何从第三方供应商干净地安装和更新客户端资产.我真正想做的就是获取当前版本并将生产就绪文件复制到固定位置.到目前为止我能想出的最好的是这个丑陋的事情:
gulp.task('bower', ['clean','load'], function(){
var bowerFilesToMove = [
'angular*/*',
'bootstrap/dist/*',
'fontawesome/*',
'jasny-bootstrap/dist/*',
'jcrop/css/*',
'jcrop/js/*',
'jquery/dist/*',
'jquery-align-column/*',
'jquery-autosize/*',
'jqueryui/ui/minified/*',
'moment/min/*',
'select2/*',
'underscore/*',
];
bowerFilesToMove.forEach(function(filespec){
gulp.src('./bower_components/'+filespec+'.css')
.pipe(flatten())
.pipe(gulp.dest('public/vendor/css'));
});
bowerFilesToMove.forEach(function(filespec){
gulp.src('./bower_components/'+filespec+'.js')
.pipe(flatten())
.pipe(gulp.dest('public/vendor/js'));
});
bowerFilesToMove.forEach(function(filespec){
gulp.src('./bower_components/'+filespec+'.map')
.pipe(flatten())
.pipe(gulp.dest('public/vendor/js'));
});
gulp.src('./bower_components/jqueryui/themes/*')
.pipe(gulp.dest('public/vendor/css/themes'));
gulp.src('./bower_components/bootstrap/dist/fonts/*')
.pipe(gulp.dest('public/vendor/fonts'));
gulp.src('./bower_components/fontawesome/fonts/*')
.pipe(gulp.dest('public/vendor/fonts'));
});
gulp.task('clean', function(){
return gulp.src('./public/vendor')
.pipe(clean({force: true}));
});
gulp.task('load', function(){
return bower();
});
Run Code Online (Sandbox Code Playgroud)
我一直在阅读很多内容,试图找出客户端部署的最佳实践和工具,但刚刚让自己变得越来越困惑.我确信前端将比选择包和运行"composer update"更复杂,但这看起来非常糟糕.有哪些更好的方法来处理它?
add*_*dyo 10
每当我在生产级应用程序上工作时,不是手动处理将特定供应商资产复制到目录中,而是允许我的构建过程查看引用任何<script>标记的相关标记文件并确定需要什么复制过来.这可以避免复制或部署实际未使用的脚本.
如果您想了解我们Yeoman团队如何使用此类设置,请在此处查看我们的Gulp文件,该文件也使用以下useref任务:
https://github.com/yeoman/generator-gulp-webapp/blob/master/app/templates/gulpfile.js#L27