@makcstudio

Очень долгая сборка проекта с использованием webpack. Как исправить?

Всем привет, когда использовал 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
        }),
    ]
}
  • Вопрос задан
  • 400 просмотров
Пригласить эксперта
Ответы на вопрос 1
@makcstudio Автор вопроса
Честно, не знал. Нужно прочитать про сервер. Я думал, что сервер просто делает тоже самое что я пишу в консоле, только автоматом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы