Когда вы разрабатываете пакет с использованием npm, вы, вероятно, захотите предоставить пользователям две версии вашего пакета: одну в необработанном исходном коде для разработки и отладки, а вторую минифицированную версию для использования в боевой среде.
Есть несколько подходов к достижению этой цели, и рассмотрим два наиболее распространенных способа.
1. Использование инструментов сборки, таких как Webpack или Rollup:
Преимущество использования инструментов сборки заключается в том, что они позволяют вам автоматически собирать и минифицировать ваш пакет при сборке.
- Установите инструмент сборки (например, webpack или rollup) и необходимые плагины:
npm install webpack webpack-cli
- Создайте файл конфигурации для инструмента сборки, например, webpack.config.js
, и определите в нем необходимые настройки:
const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'my-package.js', library: 'MyPackage', libraryTarget: 'umd', umdNamedDefine: true, }, mode: 'production', };
- Добавьте скрипт сборки в ваш package.json
:
"scripts": { "build": "webpack --config webpack.config.js" }
- Создайте необходимые импорты и экспорты в вашем исходном коде:
// src/index.js import { someFunction } from './utils'; export default { someFunction, };
- Запустите сценарий сборки:
npm run build
Это создаст минифицированную версию вашего пакета в папке dist
.
2. Использование специальных npm-скриптов:
Если вы не хотите использовать инструменты сборки, вы можете воспользоваться возможностями npm-скриптов для создания минифицированной версии.
- Установите необходимые инструменты для минификации, например, terser
:
npm install terser --save-dev
- В package.json
добавьте скрипт для минификации вашего пакета:
"scripts": { "build": "rollup src/index.js --format umd --name MyPackage | terser -c -m -o dist/my-package.min.js" }
- Запустите скрипт сборки:
npm run build
Это создаст минифицированную версию вашего пакета в папке dist
.
В обоих случаях вы получите минифицированную версию вашего пакета, которую можете использовать в боевой среде. Включение минифицированного файла вместе с основным обычно происходит путем публикации пакета на npm или включения скомпилированных файлов в репозиторий проекта. Вам также может потребоваться настроить ваш package.json
, чтобы описать зависимости и точку входа вашего пакета.