2.1.2 • Published 7 years ago

leomax-webpack v2.1.2

Weekly downloads
2
License
ISC
Repository
gitlab
Last release
7 years ago

leomax-webpack

npm version

For developers

Сейчас - TypeScript

В данный момент происходит переписывание и улучшение идей модуля на TypeScript.

Прогресс

  • Webpack.ts (основной рабочий класс)
    • Подключение пресетов
    • Очередь пресетов
    • Получение итоговой конфигурации
    • Получение компилятора
    • Хуки для работы с компилятором
  • Preset.ts (Базовый класс пресета)
    • Конфигурируемость
    • Заменяемость
    • Приоритет в очереди
  • Пресеты
    • babel
    • env
    • react
    • async
    • statics
    • hot
    • style

Основа

Использование

import Webpack from 'leomax-webpack';

const webpack = new Webpack({
  env: 'development',
  context: __dirname,
  hot: {
    port: 9000
  }
});
// ...
webpack.run();

Пресеты

Конфигурация собирается из группы пресетов, обладающих следующими свойствами:

  • Назначение. Каждый пресет делает что-то одно.
  • Приоритет. Некоторые пресеты запускаются раньше в зависимости от приоритета. (по умолчанию 0)
  • Конфигурация. Часть общей конфигурации, за которую отвечает пресет.
  • Зависимости. Пресет может быть связан с другими (требовать, модифицировать, отключать и т.п.)
  • Настраиваемость. Пресет может предоставлять опции для настройки или использовать опцию сборщика flags

Babel

Создает babel-loader`ы.

Зависимости

Расширяется/подменяется другими пресетами.

Конфигурация

{
  module: {
    rules: [ ... ]
  }
}

Target

Добавлят правила в зависимости от переменной окружения и платформы.

Конфиурация

{
  target,
  devtool,
  ?performance,
  ?externals,
  plugins: [
    DefinePlugin,
    ?NoErrorsPlugin,
    ?HotModuleReplacementPlugin,
    ?LoaderOptionsPlugin,
    ?ExtractTextPlugin,
    ?AssetsPlugin
  ]
}

Async

Пресет для оптимизации работы webpack`а. Использует HappyPack. Делает сборку мультипоточной, улучшает кеширование, запоминает предыдущую сборку.

Зависимости

Конфигурация данных пресетов будет перенесена в HappyPack:

  • babel
  • css
    • css/less
    • css/sass
  • react

Конфигурация

{
  module: {
    rules: [
      ...{
        loader: 'happypack/loader?id=xxx',
        ...
      }
    ]
  },
  plugins: [
    ...HappyPack
  ]
}

CSS, CSS/(less, sass)

Добавляет конфигурацию для стилей и препроцессоров

Конфигурация

{
  module: {
    rules: [ ... ]
  }
}