@Emeralldo
Junior Vue.js developer

Как ускорить сборку Webpack с 30 минут до 5-10?

Рабочий проект довольно объемный, написан на Vue + TypeScript и собирается вебпаком порядка 30-40 минут. Соответственно, при переключении ветки, создании/удалении файлов hotreload ломается и приходится опять ждать полчаса.

Есть ли способы аппаратно ускорить сборку? Пробовал ставить на SSD, пробовал на новом компьютере с мощным процессором (i7-8700), пробовал на старом (i5-4250M) - везде результат один. Есть какие-то способы уменьшить время сборки хотя бы на треть, не редактируя код?

В целом, хотелось бы узнать, на что идет нагрузка при сборке - диск, процессор, озу, еще что-то?
  • Вопрос задан
  • 1750 просмотров
Решения вопроса 1
@Emeralldo Автор вопроса
Junior Vue.js developer
Нашел решение путем анализа процесса сборки. Заметил, что некоторые файлы, которые буквально состоят из одного props, компилируются по минуте. Библиотек никаких не было, стили тоже только свои. Проблема заключалась в проверке типов TypeScript - она и компиляция файлов происходили в одном потоке.

Далее решение, если вы пользуетесь ts-loader:
Устанавливаете плагин
npm install fork-ts-checker-webpack-plugin

В webpack.config.js - регистрируете плагин, добавляете опцию transpileOnly: true к лоадеру и прописываете плагин в plugins:
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
module.exports = {
  module: {
    rules: [
      test: /\.tsx?$/,
      loader: 'ts-loader',
      exclude: /node_modules/,
      options: {
        transpileOnly: true
      }
    ]
  },
  plugins: [
    new ForkTsCheckerWebpackPlugin()
  ],


Время сборки сократилось в 60 раз - с 30 минут до 30-40 секунд
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rockon404
@rockon404
Frontend Developer
Нездоровая фигня. В каких бы больших проектах не участвовал - таких цифр не видел.
Сделал билд предыдущего немаленького проекта с одной клиентской точкой входа и одной серверной(React/Typescript) на i7-4770HQ - 1 минута 45 секунд.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы