如何使用gulp来设置ExpressJS来自动重新加载(gulp-live-server)

我有一个简单的快速4.xtesting应用程序。 我知道你可以使用gulp从自动重新加载中受益,所以在更改服务器上的任何内容之后,它会自动重新启动。

我设法与快车安装车把模板引擎。

我的文件系统非常简单:

  • app / main.js – >是服务器
  • app / gulp.js – >是gulp文件
  • app / views / *。hbs – >包含我的句柄文件
  • app / views / layouts / *。hbs – >包含我的句柄布局文件

我正在使用gulp-live-server,而且我有一种感觉,我错过了一些东西(只看了几个教程来找出是什么吞咽)

app / gulp.js – 来自gulp -live-server的第二个例子

var gulp = require('gulp'); var gls = require('gulp-live-server'); gulp.task('serve', function() { //1. run your script as a server var server = gls.new('main.js'); server.start(); //2. run script with cwd args, eg the harmony flag var server = gls.new(['--harmony', 'main.js']); //this will achieve `node --harmony main.js` //you can access cwd args in `main.js` via `process.argv` server.start(); //use gulp.watch to trigger server actions(notify, start or stop) gulp.watch(['views/*.hbs', 'static/views/layouts.hbs'], function (file) { server.notify.apply(server, [file]); }); gulp.watch('main.js', server.start.bind(server)); //restart my server // Note: try wrapping in a function if getting an error like `TypeError: Bad argument at TypeError (native) at ChildProcess.spawn` gulp.watch('main.js', function() { server.start.bind(server)() }); }); 

应用程序/ main.js

 var express = require( 'express' ); var hbs = require( 'express-handlebars' ); var app = express(); app.engine( 'hbs', hbs( { extname: '.hbs', defaultLayout: 'layout', layoutsDir: __dirname + "/views/layouts/" } ) ); app.set( 'view engine', 'hbs' ); app.get( "/", function( req, res ) { res.render( "index.hbs", {title: "World"} ); } ); app.use( '/public', express.static( 'public' ) ); var port = Number( process.env.PORT || 5000 ); app.listen( port ); 

我期待的是:

运行节点gulp.js后 ,应用程序将开始在端口5000上侦听,并随时重新启动views / *上的内容。

**实际发生了什么:**

吞噬只开始并且结束执行。

configuration细节:

在这里输入图像说明

安装过程中潜在的问题(?):

请注意已弃用的优雅组件..

在这里输入图像说明

我相信我错过了一些非常明显的东西:))

如果node gulp.js serve意味着你正在执行上面发布的app/gulp.js文件,那么这是行不通的。 app/gulp.js文件只定义你的任务。 它并不实际执行它们。

要执行你需要安装gulp命令行工具的任务。 最简单的方法是在全球安装gulp

 npm install -g gulp 

您需要确保命令行工具的安装位置( npm将logging位置)位于您的PATH环境variables中。 只要在命令行inputgulp会告诉你是否是这种情况。

接下来,您需要将您的gulp文件从app/gulp.js重命名为app/gulpfile.js ,这是app/gulpfile.js命令行工具查找您的任务定义的位置。

现在你可以在app/目录下运行gulp serve ,它应该执行app/gulpfile.js定义的serve任务。

你可以尝试运行你的代码看tsc …

npm run tsc -w

将这个脚本添加到你的package.json