Всем привет, когда использовал systemJs для сборки все было отлично, но все файлы были открытыми + я писал код в visual studio и я перешел на webpack + сейчас проект в vscode . Теперь бандл собирается порядка 22 секунд (т.е полностью перестраивается)
Можно-ли как то не перестраивать бандл полностью, если я например меняю всего 1 typescript файл?
Никакой webpack-server не использую, просто компилирую через npm run webpack-script --color=always
Вот webpack.config, может кто знает , как с этим бороться.. Просто 20 секунд для просмотра изменения при разработке очень много
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
entry: {
'polyfills': './wwwroot/app/polyfills.ts',
'app': './wwwroot/app/main.ts'
},
output: {
path: path.resolve(__dirname, 'wwwroot/bundle/'), // путь к каталогу выходных файлов - папка public
publicPath: '/bundle/',
filename: '[name].[hash].js',
chunkFilename: '[name].[hash]-chunk.js',
},
devServer: {
historyApiFallback: true,
},
resolve: {
extensions: ['.ts', '.js']
},
module: {
rules: [ //загрузчик для ts
{
test: /\.ts$/, // определяем тип файлов
use: [
{
loader: 'awesome-typescript-loader',
options:
{ configFileName: path.resolve(__dirname, './wwwroot/tsconfig.json'),
useCache: true,
},
},
'angular2-template-loader',
"angular-router-loader"
]
}, {
test: /\.html$/,
loader: 'html-loader'
}, {
test: /\.cshtml$/,
loader: 'html-loader'
}, {
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
loader: 'file-loader?name=assets/[name].[hash].[ext]'
}, {
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}, {
test: /\app.min.js/,
use: "imports-loader?this=>window"
}
]
},
plugins: [
new webpack.ContextReplacementPlugin(
/angular(\|\/)core/,
path.resolve(__dirname, ''),
{
'./[name].js': './bundle/[name].js',
}
),
new HtmlWebpackPlugin({
inject: "body",
filename: '../../Views/Shared/_Layout.cshtml',
template: './Views/Shared/_Layout_Template.cshtml'
}),
new MiniCssExtractPlugin({
filename: "[name].css",
}),
new webpack.NoEmitOnErrorsPlugin(),
new webpack.LoaderOptionsPlugin({
htmlLoader: {
minimize: false
}
}),
new webpack.SourceMapDevToolPlugin({
filename: '[name].map', // Remove this line if you prefer inline source maps
moduleFilenameTemplate: path.relative('wwwroot/bundle/', '[resourcePath]') // Point sourcemap entries to the original file locations on disk
}),
]
}