我正在嘗試爲具有節點後端服務器的Angular2應用程序設置基於webpack的流。幾個小時後,我的頭撞到它,我設法讓客戶快樂地建設,但我無法弄清楚現在如何集成我的服務器版本。我的服務器使用生成器,因此必須針對ES6,並且它需要指向不同的類型文件(main.d.ts而不是browser.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在客戶端和服務器文件夾將工作,但沒有運氣那裏。我也無法找到一種方法來獲取html-webpack-plugin來忽略我的服務器包,而不是將它注入到index.html中。我目前的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不會負責重新啓動服務器; nodemon會。這不行嗎? – McMath
我剛想過點什麼。你有沒有考慮過,如果你需要webpack來進行你的服務器端構建?我只是認爲使用'tsc -p ./server -w',其中''可能更容易。/ server'包含服務器端代碼和它的'tsconfig.json'文件。 – McMath