将我的AngularJS应用grunt build
发送到我的dist
目录后,我想用grunt server
对其进行测试。问题是grunt server
只提供了app/
目录中的所有代码。另外,请注意我使用yo angular
创建了我的应用。
以下是 Gruntfile.js
中的服务器任务代码grunt.registerTask('server', [
'clean:server',
'coffee:dist',
'compass:server',
'livereload-start',
'connect:livereload',
'open',
'watch'
]);
有没有办法让grunt server
仅提供我dist/
目录中的构建代码?
答案 0 :(得分:116)
答案非常简短
grunt serve:dist
这适用于我自己生成的Gruntfile.js
,其中包含:
grunt.registerTask('serve', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'connect:dist:keepalive']);
}
grunt.task.run([
'clean:server',
'bower-install',
'concurrent:server',
'autoprefixer',
'connect:livereload',
'watch'
]);
});
答案 1 :(得分:29)
你能不能做到这一点并不重要。 重要的是你不应该使用grunt服务器。你可以看到grunt中的服务器任务做了很多你在dist文件夹中不需要的东西,以及它们都将被硬编码为您的app文件夹。
如果你只是想尝试dist文件夹的结果,你应该做的只是cd进入dist目录,然后启动一个简单的HTTP服务器,就像python附带的那样。
python -m SimpleHTTPServer
那应该启动一个小服务器来尝试远程目录。
答案 2 :(得分:3)
虽然其他人没有建议这样做,但我相信这正是你要找的。使用express时,我在server.js文件中执行类似的操作。
if (process.env.NODE_ENV == 'production') {
app.use(express.static('/dist'));
}else{
app.use(express.static('/app'));
}
希望这有帮助!
答案 3 :(得分:3)
grunt serve:dist
答案是正确答案,但这个过程非常烦人,因为每次调用grunt serve时都需要将整个项目编译成生产模式:dist。
我所做的是修改了Gruntfile.js
任务中的serve
,从发送到build
的参数中删除了run
任务。您需要先使用grunt
或grunt build
手动构建,然后调用grunt serve:dist
并手动打开该网址。