web-dev-qa-db-ja.com

アプリディレクトリではなくdistディレクトリでgruntサーバーを実行する方法は?

grunt buildAngularJSアプリをdistディレクトリに移動した後、grunt serverでテストします。問題は、grunt serverapp/ディレクトリ内のすべてのコードを提供するだけであるということです。また、yo angularを使用してアプリを作成したことに注意してください。

ここに私のGruntfile.jsのサーバータスクコードがあります

grunt.registerTask('server', [
    'clean:server',
    'coffee:dist',
    'compass:server',
    'livereload-start',
    'connect:livereload',
    'open',
    'watch'
  ]);

grunt serverdist/ディレクトリ内のビルドされたコードのみを提供するようにする方法はありますか?

33
user883807

できるかどうかは重要ではありません。 重要なのは、このためにgruntサーバーを使用しないことです。ご覧のようにgruntのサーバータスクは、distフォルダーに必要のない多くのことを行います。これらはすべて、アプリフォルダー用にハードコーディングされます。

Distフォルダーの結果を試してみたい場合は、distディレクトリーにcdして、pythonに付属しているような単純なHTTPサーバーを起動するだけです。

python -m SimpleHTTPServer

Distディレクトリを試すための小さなサーバーが起動するはずです。

29
DerekR

非常に短い答えは

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'
    ]);
  });
117
Jarl

grunt serve:dist答えは正しいものですが、grunt serve:distを呼び出すたびにプロジェクト全体をプロダクションモードにコンパイルする必要があるため、プロセスは非常に面倒です。

私がしたことは、serveタスクのGruntfile.jsを変更し、buildに送信されたパラメーターからrunタスクを削除したことです。最初にgruntまたはgrunt buildを使用して手動でビルドし、次にgrunt serve:distを呼び出して手動でURLを開く必要があります。

3
Ramiro Araujo

他の人はこれを行うことを勧めていませんが、私はこれがあなたが探しているものだと信じています。エクスプレスを使用する場合、server.jsファイルでこのようなことを行います。

if (process.env.NODE_ENV == 'production') {
    app.use(express.static('/dist'));
}else{
    app.use(express.static('/app'));       
}

お役に立てれば!

3