【发布时间】:2015-09-27 09:42:16
【问题描述】:
目前几乎感觉我对所有这些依赖项都很贪婪,但我很想将 Bower 添加到我当前的工作流程中。
我的 AngularJS 应用程序是在 Node/Express 服务器上构建的,同时也带有 Browsersync。我使用Gulp 来运行它。这是我目前的Gulpfile(以及我为自己学习而保留的cmets):
'use strict';
var gulp = require('gulp');
var browserSync = require('browser-sync');
var nodemon = require('gulp-nodemon');
var watch = require('gulp-watch');
var less = require('gulp-less');
var bower = require('gulp-bower');
var mainBowerFiles = require('main-bower-files');
var BROWSER_SYNC_RELOAD_DELAY = 500;
gulp.task('less', function() {
gulp.src('./public/css/*.less')
.pipe(less())
.pipe(gulp.dest('./public/css'));
});
gulp.task('nodemon', function(cb) {
var called = false;
return nodemon({
script: 'app-local.js',
watch: ['app-local.js', 'routes/**.js', 'config/*.js', 'app/**/*.js']
})
.on('start', function onStart() {
if (!called) {
cb();
}
called = true;
})
.on('restart', function onRestart() {
setTimeout(function reload() {
browserSync.reload({
stream: false //
});
}, BROWSER_SYNC_RELOAD_DELAY);
});
});
gulp.task('watch', function() {
gulp.watch('./public/css/*.less', ['less']);
});
gulp.task('browser-sync', ['nodemon', 'less', 'watch'], function() {
browserSync.init({
files: ['public/**/*.*', 'views/**/*.jade'],
proxy: 'https://localhost:8080',
port: 4000,
browser: ['google-chrome']
});
});
gulp.task('default', ['browser-sync']);
Nodemon 正在将我的 JADE 模板处理成 HTML,并在此处完成大部分工作。
目前我的 .js 依赖项生活在 /public/js/vendor/ 中,它们被硬编码到我的 /views/index.jade 视图中,如下所示:
script(src='/js/vendor/papa-parse.js')
script(src='/js/vendor/d3.js')
script(src='/js/vendor/nvd3.js')
script(src='/js/vendor/angular.js')
script(src='/js/vendor/ngd3-angular.js')
script(src='/js/vendor/angular-animate.js')
script(src='/js/vendor/angular-aria.js')
script(src='/js/vendor/angular-messages.js')
script(src='/js/vendor/angular-material.js')
script(src='/js/vendor/angular-route.js')
我想用一个简单的替换这些:
// bower:js
// endbower
让 Gulp 完成剩下的工作。我试过了:
gulp.task('wiredep', function() {
var wiredep = require('wiredep').stream;
gulp.src(mainBowerFiles())
.pipe(wiredep())
.pipe(gulp.dest('/views/index.jade'));
});
然后在nodemon 运行之前添加wiredep 任务-gulp.task('browser-sync', ['wiredep', 'nodemon', 'less', 'watch']),但这根本不起作用。
让所有这些工作顺利进行的最佳方式是什么?
【问题讨论】:
-
您是否尝试过将其作为单独的任务运行?它在这种情况下有效吗?
标签: javascript angularjs node.js gulp bower