Как запустить сервер grunt в каталоге dist вместо каталога приложения?
После grunt build
моего приложения AngularJS в мой каталог 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/
?
Ответы
Ответ 1
Независимо от того, можете ли вы это сделать, это не важно. Важно то, что для этого вам не следует использовать сервер grunt. Задача сервера в grunt, как вы можете видеть, делает много вещей, которые вам не нужны в папке dist, а также тот факт, что все они будут жестко закодированы для вашей папки приложения.
Если вы просто хотите попробовать результат из папки dist, то вам нужно просто cd в каталог dist, а затем запустить простой HTTP-сервер, такой как тот, который поставляется с python.
python -m SimpleHTTPServer
Чтобы запустить каталог dist, запустите небольшой сервер.
Ответ 2
Самый короткий ответ
grunt serve:dist
Это работает с моим созданным yeoman 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'
]);
});
Ответ 3
Хотя другие не советовали это делать, я считаю, что это то, что вы ищете. Я делаю что-то подобное в моем файле server.js при использовании express.
if (process.env.NODE_ENV == 'production') {
app.use(express.static('/dist'));
}else{
app.use(express.static('/app'));
}
Надеюсь, это поможет!
Ответ 4
Ответ grunt serve:dist
правильный, но процесс довольно раздражает, потому что вам нужно скомпилировать весь ваш проект в производственный режим каждый раз, когда вы вызываете grunt serve: dist.
Что я сделал, я изменил Gruntfile.js
в задаче serve
, удалив задачу build
из параметра, отправленного на run
. Сначала нужно вручную создать grunt
или grunt build
, а затем вызвать grunt serve:dist
и вручную открыть URL-адрес.