leomax-webpack
v2.1.2
Published
Обертка над webpack@2. Предоставляет API для быстрой инициализации сборки
Downloads
33
Maintainers
Readme
leomax-webpack
For developers
Сейчас - TypeScript
В данный момент происходит переписывание и улучшение идей модуля на TypeScript.
Прогресс
- [x] Webpack.ts (основной рабочий класс)
- [x] Подключение пресетов
- [x] Очередь пресетов
- [x] Получение итоговой конфигурации
- [x] Получение компилятора
- [x] Хуки для работы с компилятором
- [x] Preset.ts (Базовый класс пресета)
- [x] Конфигурируемость
- [x] Заменяемость
- [x] Приоритет в очереди
- [x] Пресеты
- [x] babel
- [x] env
- [x] react
- [x] async
- [x] statics
- [x] hot
- [x] style
Основа
- Webpack 2 для сборки.
- webpack-dev-middleware в качестве прослойки для dev-сервера
- webpack-hot-middleware в качестве прослойки для горячей перезагрузки
- Webpack Dashboard для отображения состояния сборки. (Возможно)
- HappyPack для оптимизации и ускорения работы webpack
- webpack-merge для объединения конфигов
- Лоадеры
- react-hot-loader для горячей перезагрузки react-компонентов
- babel-loader для транспайлинга es-next кода
- image-webpack-loader для сжатия изображений
- Плагины
- friendly-errors-webpack-plugin для дружелюбного вывода состояния сборки в консоль
- case-sensitive-paths-webpack-plugin для избегания ошибок в регистре файлов и дерикторий ( под вопросом )
Использование
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: [ ... ]
}
}