如何使用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