32

grunt buildAngularJS アプリを自分のディレクトリに ing した後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/

4

4 に答える 4

116

非常に短い答えは

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'
    ]);
  });
于 2014-01-22T14:32:57.193 に答える
30

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

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

python -m SimpleHTTPServer

これにより、dist ディレクトリを試すための小さなサーバーが起動するはずです。

于 2013-08-20T21:57:32.807 に答える
3

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

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

お役に立てれば!

于 2013-11-11T21:47:34.767 に答える
3

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

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

于 2014-05-28T18:12:11.113 に答える