node app.use()src表示local,dist表示prod

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node app.use()src表示local,dist表示prod相关的知识,希望对你有一定的参考价值。

我正在更新一个有角度的1.6网络应用程序与gulp。我有本地开发人员的gulp watch任务设置,使用browser-sync自动重新加载我的本地源文件。我正在制作一个新的gulp任务build-prod minify / concat等。看起来所有的教程和自述文件都集中在“本地”或“生产”设置上。所以,我想弄清楚并在线之间阅读。

处理节点server.js文件的最佳方法是什么,以便它知道src是本地的,而dist是prod?

app.use('/scripts', express.static(__dirname + '/src/scripts/'));
app.use('/css', express.static(__dirname + '/src/css/'));
app.use('/html', express.static(__dirname + '/src/html'));
app.use('/img', express.static(__dirname + '/src/img'));

需要成为:

app.use('/scripts', express.static(__dirname + '/dist/scripts/'));
app.use('/css', express.static(__dirname + '/dist/css/'));
app.use('/html', express.static(__dirname + '/dist/html'));
app.use('/img', express.static(__dirname + '/dist/img'));

我应该用变量交换src和dist还是有更好的方法在多个环境之间“使用”这些?

答案

使用环境变量。

    app.use('/scripts', express.static(`${__dirname}/${process.env.client_directory}`));

然后在运行应用程序的过程中设置环境变量。

另一答案

您可以使用像dotenv这样的模块将.env文件中的环境变量加载到process.env中。然后,您可以使用nodeapp.set('env', 'development')中设置应用程序的环境。

另一答案

谢谢(你的)信息。 此外,基于this post,添加到我的gulp命令npm run gulp-watch

gulp.task('watch', ['set-dev-node-env', 'browser-sync'], function () {
    gulp.watch(['./src/**/*.*'], reload);    
});
gulp.task('set-dev-node-env', function() {
   process.env.NODE_ENV = 'development';
   return;
});

并在我的server.js文件中

// environment checker
var port;
var useFolder;
if (process.env.NODE_ENV === 'development') {
    port = process.env.PORT = 5000;
    useFolder = '/src/';
} else if (process.env.NODE_ENV === 'production') {
    port = process.env.PORT = 80;
    useFolder = '/dist/';
}

app.use('/html', express.static(__dirname + useFolder + 'html'));

以上是关于node app.use()src表示local,dist表示prod的主要内容,如果未能解决你的问题,请参考以下文章

node.js之express中app.use

Node.js Mongoose 回调

node js app.use 抛出一个中间件函数

在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));`

node 基础

node 分层开发