Webpack con una configuración de nodo cliente / servidor?
Estoy tratando de configurar un flujo basado en webpack para una aplicación Angular2 con un servidor de back-end de nodo. Después de muchas horas golpeándome la cabeza, logré que el cliente construyera felizmente, pero no puedo entender cómo integrar ahora la construcción de mi servidor. Mi servidor utiliza generadores, por lo que debe apuntar a ES6 y debe apuntar a un archivo de tipificación diferente (main.d.ts en lugar de browser.d.ts).
Mi árbol de origen se parece;
/
-- client/
-- -- <all my angular2 bits> (*.ts)
-- server/
-- -- <all my node/express bits> (*.ts)
-- webpack.config.js
-- typings/
-- -- browser.d.ts
-- -- main.d.ts
Pensé que tal vez solo un tsconfig.json en las carpetas de cliente y servidor funcionaría, pero no tuve suerte allí. Tampoco puedo encontrar una manera de obtener html-webpack-plugin para ignorar el paquete de mi servidor y no inyectarlo en index.html. Mi tsconfig y webpack actuales están a continuación, pero ¿alguien ha logrado que webpack incluya una configuración como esta? Cualquier puntero sería muy apreciado.
{
"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"
]
}
y mi 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')
]
};