私は、ノードバックエンドサーバーを持つAngular2アプリ用のWebpackベースのフローを設定しようとしています。何時間も頭を悩まして、クライアントを幸せに育てることができましたが、サーバービルドの統合方法を理解できません。私のサーバはジェネレータを使用しているので、ES6をターゲットにする必要があり、別の入力ファイル(browser.d.tsではなくmain.d.ts)を指す必要があります。クライアント/サーバーノードをセットアップしたWebpack?
ソースツリーは次のようになります。
/
-- client/
-- -- <all my angular2 bits> (*.ts)
-- server/
-- -- <all my node/express bits> (*.ts)
-- webpack.config.js
-- typings/
-- -- browser.d.ts
-- -- main.d.ts
私は、クライアントとサーバーのフォルダ内だけtsconfig.jsonが働くだろう、おそらく思っていないが、そこには運。また、私のサーババンドルを無視してindex.htmlに挿入しないhtml-webpack-pluginを入手する方法も見つけられません。私の現在のtsconfigとwebpackは以下の通りですが、誰もwebpackを使ってこのような設定をバンドルすることに成功しましたか?どんな指針も大変ありがとうございます。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"declaration": false,
"removeComments": true,
"noEmitHelpers": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"files": [
"typings/browser.d.ts",
"client/app.ts",
"client/bootstrap.ts",
"client/polyfills.ts"
]
}
と私のwebpack.config.js;
var Webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var Path = require('path');
module.exports = {
entry: {
'polyfills': Path.join(__dirname, 'client', 'polyfills.ts'),
'client': Path.join(__dirname, 'client', 'bootstrap.ts')
},
output: {
path: Path.join(__dirname, 'dist'),
filename: '[name].bundle.js'
},
resolve: {
extensions: ['', '.js', '.json', '.ts']
},
module: {
loaders: [
{
test: /\.ts$/,
loader: 'ts-loader',
query: {
ignoreDiagnostics: [
2403, // 2403 -> Subsequent variable declarations
2300, // 2300 -> Duplicate identifier
2374, // 2374 -> Duplicate number index signature
2375, // 2375 -> Duplicate string index signature
]
}
},
{ test: /\.json$/, loader: 'raw' },
{ test: /\.html$/, loader: 'raw' },
{ test: /\.css$/, loader: 'raw!postcss' },
{ test: /\.less$/, loSWE: 'raw!postcss!less' }
]
},
plugins: [
new HtmlWebpackPlugin({ template: 'client/index.html', filename: 'index.html' }),
new Webpack.optimize.CommonsChunkPlugin('common', 'common.bundle.js')
]
};
ありがとうございました!私はこれが実際に実行可能かもしれないと思う、唯一の質問は..どのようにWebpackを起動して(nodemon)サーバー側にし、webpack --watchを使うときに変更時に再起動するのですか? – XeroxDucati
私は問題を理解しているかどうかはわかりません。 nodemonを使用している場合は、メイン出力ファイル(例: 'nodemon。/ build/server.js'です。サーバー側の出力ファイルに対するすべてのファイルの変更時に再起動する必要があります。 'webpack ... --watch'を使うと、入力ファイルが変わるたびに出力ファイルが変わります。言い換えれば、webpackはあなたのサーバを再起動する責任を負いません。ノーデモン意志。それは動作しませんか? – McMath
私はちょうど何かを考えました。サーバーサイドのビルドにwebpackが必要な場合は、考慮しましたか?私はちょうど 'tsc -p ./server -w'のようなものを使う方が簡単かもしれないと思っていました。/ server'にはサーバ側コードと 'tsconfig.json'ファイルが含まれています。 – McMath