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/
ディレクトリ内のビルドされたコードのみを提供するようにする方法はありますか?
できるかどうかは重要ではありません。 重要なのは、このためにgruntサーバーを使用しないことです。ご覧のようにgruntのサーバータスクは、distフォルダーに必要のない多くのことを行います。これらはすべて、アプリフォルダー用にハードコーディングされます。
Distフォルダーの結果を試してみたい場合は、distディレクトリーにcdして、pythonに付属しているような単純なHTTPサーバーを起動するだけです。
python -m SimpleHTTPServer
Distディレクトリを試すための小さなサーバーが起動するはずです。
非常に短い答えは
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'
]);
});
grunt serve:dist
答えは正しいものですが、grunt serve:distを呼び出すたびにプロジェクト全体をプロダクションモードにコンパイルする必要があるため、プロセスは非常に面倒です。
私がしたことは、serve
タスクのGruntfile.js
を変更し、build
に送信されたパラメーターからrun
タスクを削除したことです。最初にgrunt
またはgrunt build
を使用して手動でビルドし、次にgrunt serve:dist
を呼び出して手動でURLを開く必要があります。
他の人はこれを行うことを勧めていませんが、私はこれがあなたが探しているものだと信じています。エクスプレスを使用する場合、server.jsファイルでこのようなことを行います。
if (process.env.NODE_ENV == 'production') {
app.use(express.static('/dist'));
}else{
app.use(express.static('/app'));
}
お役に立てれば!