Sto provando a configurare un flusso basato sul webpack per un'app Angular2 con un server di backend del nodo. Dopo molte ore sbattendo la testa contro di esso, sono riuscito a convincere il cliente a costruire felicemente, ma non riesco a capire come integrare ora la mia build del server. Il mio server utilizza i generatori, quindi deve avere come target ES6 e deve puntare a un file di tipizzazione diverso (main.d.ts anziché browser.d.ts).Webpack con un'impostazione del nodo client/server?
L'albero di origine è simile;
Ho pensato che forse un tsconfig.json nelle cartelle client e server avrebbe funzionato, ma senza fortuna. Inoltre non riesco a trovare un modo per ottenere il plugin html-webpack per ignorare il mio bundle server e non inserirlo in index.html. Il mio attuale tsconfig e webpack sono sotto, ma qualcuno è riuscito a far sì che il webpack riunisse un setup come questo? Ogni consiglio sarebbe molto apprezzato.
{
"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 il mio 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')
]
};
Grazie! Penso che questo potrebbe effettivamente essere praticabile, l'unica domanda è .. come faccio ad avviare il webpack (nodemon) dal lato server, e riavviarlo quando cambi usando webpack --watch? – XeroxDucati
Non sono sicuro di aver capito il problema. Se stai usando nodemon, avvialo semplicemente sul file di output principale, ad es. 'nodemon./build/server.js'. Dovrebbe essere riavviato su qualsiasi modifica di file ai file di output sul lato server. E se usi 'webpack ... --watch', i file di output cambieranno ogni volta che cambieranno i file di input. In altre parole, webpack non sarà responsabile per il riavvio del server; nodemon lo farà. Non funziona? – McMath
Ho appena pensato a qualcosa. Hai preso in considerazione se hai bisogno di webpack per la tua build lato server? Ho pensato che potrebbe essere più semplice usare qualcosa come 'tsc -p ./server -w', dove'./ server' contiene il codice lato server e il suo file 'tsconfig.json'. – McMath