Express 可以在使用虚拟主机时运行 Gulp 或 Grunt 任务吗?

Posted

技术标签:

【中文标题】Express 可以在使用虚拟主机时运行 Gulp 或 Grunt 任务吗?【英文标题】:Can Express run Gulp or Grunt tasks when using vhosts? 【发布时间】:2014-06-22 03:17:43 【问题描述】:

我通常使用 Gulp 启动我的 NodeJS 服务器,任务类似于:

gulp.task('server', function()

  var port = gulp.env.port || 80;

  plugins.nodemon(
    script: 'server.js',
    ignore: '*',
  ).on('start', ['source','watch:source']);

);

编译我所有的 Jade & Sass 模板并将它们转储到资产文件夹中。

对于我当前的项目,我正在引入虚拟主机,这样我就可以拥有一个 [X].mysite.com 用于不同的节点应用程序。当我启动父服务器时,我不确定如何运行我的 gulpfile。我是否应该将一个 gulpfile 放在父目录中,并在该目录中包含每个虚拟主机应用程序的所有任务? 'npm install' 和 'bower install' 的问题相同。

tl;dr: 在使用 ExpressJS 时,如何为每个虚拟主机应用程序运行 Gulp 或 Grunt 任务? 'npm install' 和 'bower install' 的问题相同。

【问题讨论】:

vhost 表示您正在使用 nginx 等服务器来配置路由。我不知道你在问什么,因为 vhost(假设 nginx 或 apache)只是你的节点应用程序的代理 不,我正在为 Express 使用虚拟主机中间件。没有 nginx。 【参考方案1】:

使用此文件夹结构:

vhost(d)
   - website1(d)
     - app.js
     - public(d)
       - index.html
   - website2(d)
     - app.js
     - public
       - index.html
server.js

您的 server.js 文件应如下所示:

 "use strict";
  var
  express = require('express'),
  vhost = require('vhost'),
  app = express(),
  website1 = require('./vhost/website1/app'),
  website2 = require('./vhost/website2/app'),
  port = process.env.PORT || 8080;

app        
  .use(vhost('localhost', website))
  .use(vhost('cms.localhost', cms))
  .listen(port, function() 
    console.log('server listening on port ' + port);
  );

您在 website1 文件夹中的 app.js 文件应如下所示:

var
express = require('express'),
app = express()

app.use(express.static(__dirname + '/public'));
app.get('/', function(req, resp) 
  resp.sendFile(__dirname + '/public/index.html');
);

module.exports = app;

website2/app.js 文件也应该这样

现在编写你的 gulp 任务并启动 server.js

gulp.task('serve', function()

  var port = gulp.env.port || 8080;

  plugins.nodemon(
    script: 'server.js',
    ignore: '*',
  ).on('start', ['source','watch:source']);

);

在项目运行的主目录中:

gulp serve

享受吧!

【讨论】:

以上是关于Express 可以在使用虚拟主机时运行 Gulp 或 Grunt 任务吗?的主要内容,如果未能解决你的问题,请参考以下文章

在Visual Studio 2015中启动IIS Express会话后,如何运行gulp任务

浏览器同步、gulp、mongodb 和 express 服务器

从前慢-Node+Gulp+Promise+Express

nodejs里的express自动刷新gulp-express使用转载

Gulp Watch 和 Nodemon 冲突

express+gulp构建项目项目目录结构