Webpack com uma configuração de nó cliente / servidor?
Estou tentando configurar um fluxo baseado na Webpack para um aplicativo Angular2 com um servidor de back-end de nó. Depois de muitas horas batendo com a cabeça, consegui fazer o cliente construir feliz, mas não consigo descobrir como integrar agora a compilação do meu servidor. Meu servidor usa geradores, portanto, deve direcionar o ES6 e precisa apontar para um arquivo de digitação diferente (main.d.ts em vez de browser.d.ts).
Minha árvore de origem 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
Eu pensei que talvez apenas um tsconfig.json nas pastas de cliente e servidor funcionasse, mas sem sorte lá. Também não consigo encontrar uma maneira de obter o html-webpack-plugin para ignorar o pacote do meu servidor e não injetá-lo no index.html. Meu tsconfig e webpack atuais estão abaixo, mas alguém conseguiu que o webpack empacote uma configuração como esta? Qualquer dica será muito apreciada.
{
"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"
]
}
e meu 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')
]
};