Подтвердить что ты не робот

Как запустить сервер 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/?

4b9b3361

Ответ 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-адрес.