我有一个gulp脚本可以连接和缩小我的JavaScript。
使用gulp-html-replace
插件,我可以用index.html
中的连接文件替换我所有的JS依赖项。
我最终得到了一个dev版本(/dev/index.html),包含了所有单个JS文件(更容易调试)和一个生产版本,所有JS都连接在一起(/prod/index.html)。 / p>
现在我在config.js
文件中有一个配置标志(在NodeJS中),我会执行以下操作:
res.render(((config.build === 'prod') ? './prod' : './dev') + 'myPage')
但我对此解决方案并不满意,因为它增加了大量代码,并且很容易忘记编写此代码。
gulp prod
和gulp dev
)我是这个npm / gulp / node工作流程的新手,不知道属于哪里
答案 0 :(得分:1)
在您的应用初始化过程中,您可以设置视图的路径。
app.set('views', process.cwd() + ((config.build === 'prod') ? '/prod' : '/dev'));
现在您可以像这样调用render函数:
res.render('myPage');
答案 1 :(得分:1)
我喜欢这样做的方法是为index.html
维护两个不同的版本。
适用于开发环境的index-development.html
和适用于生产环境的index-production.html
。
index-development.html
包括所有脚本和css(非缩小和连接)和index-production.html
作为缩小和连接的脚本和CSS链接。
我从gulp脚本构建index.html
。
默认情况下,将部署index-development.html
。
如果我为gulp脚本指定参数p
,它将部署index-production.html
无需更新express router
中要提供的文件的文件路径。
首先做
npm install yargs
在gulp中,我包括
var argv = require('yargs').argv;
检查参数p
(gulp -p
)是否通过
var isProduction = argv.p;
然后,
if(isProduction){
taskSequence = ['combineControllers','combineServices','productionsIndex','startServer'];
} else{
taskSequence = ['developmentIndex','startServer'];
}
gulp.task('default', taskSequence);
gulp.task('startServer', function(){
exec('npm start', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
cb(err);
});
});
gulp.task('productionsIndex', function(done) {
return gulp.src('./www/index-productions.html')
.pipe(concat('index.html'))
.pipe(gulp.dest('./public/'));
});
gulp.task('developmentIndex', function(done) {
return gulp.src('./www/index-development.html')
.pipe(concat('index.html'))
.pipe(gulp.dest('./public/'));
});
这样,您的index.html
文件将动态构建,而无需更改express
中的代码,您可以像
res.render('index');
如果您想在任何地方使用myPage.html
,只需使用index.html
和index
替换上面代码中的myPage.html
和myPage
。
编辑:
要在开发环境中启动应用程序,只需运行gulp
要在生产环境中启动应用程序,只需运行gulp -p
简单!