Привет всем, яЛуожу🎋, деревянный фронтенд, живущий в Ханчжоу 🧚🏻♀️, если вам понравилась моя статья 📚, вы можете помочь мне собрать духовную силу ⭐️ лайком.
Разделение большого репозитория кода на несколько пакетов с независимыми версиями полезно для совместного использования кода. Однако некоторые изменения могут стать громоздкими и трудными для отслеживания, если они охватывают несколько репозиториев, а тестирование в нескольких репозиториях может быстро стать очень сложным.
Чтобы решить эти (и многие другие) проблемы, некоторые проекты разбивают репозиторий кода на несколько пакетов и помещают каждый пакет в отдельный репозиторий кода. Однако такие проекты, как Babel, React, Angular, Ember, Meteor, Jest и многие другие, содержат и разрабатывают несколько пакетов в одном репозитории кода.
Lerna — это инструмент, оптимизированный для рабочего процесса управления многопакетными репозиториями кода с использованием git и npm.
Начинать
Установить lerna глобально
$ npm install lerna -g
Инициализировать проект lerna
$ lerna init --independent
В настоящее время ваш репозиторий кода должен выглядеть так:
lerna-repo/
packages/
package.json
lerna.json
создать пакет
$ lerna create module-1
$ lerna create module-2
yarn workspaces & Lerna Hoisting
использоватьyarn workspacesОбъединить ЛернуuseWorkspaces
может быть реализованLerna Hoisting. Это не лишнее, это позволяет управлять зависимостями в едином месте (корневом каталоге), что экономит время и место.
Настройте lerna.json:
{
...
"npmClient": "yarn",
"useWorkspaces": true
}
В файле package.json верхнего уровня должен быть массив рабочих областей:
{
"private": true,
...
"workspaces": ["packages/*"]
}
npm registry
построить вердаччо
verdaccio — легкий частный сервер npm с открытым исходным кодом.
Установить глобально:
$ npm install verdaccio -g
настроить~/.config/verdaccio/config.yaml
uplinks:
---
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
taobao:
url: https://registry.npm.taobao.org/
tuya:
url: https://registry-npm.tuya-inc.top/
Настроить автоматический запуск
0. бежатьsudo npm i -g pm2
1. бежатьpm2 start verdaccio
& pm2 startup
outputs:
[PM2] Init System found: launchd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u luozhu --hp /Users/luozhu
2. бежатьsudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u luozhu --hp /Users/luozhu
outputs:
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup launchd
Изменить lerna publishConfig
// lerna.json
{
"ignoreChanges": [
"ignored-file",
"**/__tests__/**",
"**/*.md"
],
"command": {
"publish": {
"registry": "http://localhost:4873"
},
"version": {
"conventionalCommits": true,
"message": "chore(release): publish"
}
}
}
Примечание. Если дополнительный пакет с
scope
Да, его нужно установить для подпакетовpublishConfig.access
commitlint & commitizen
Пожалуйста, обратитесь к моей предыдущей статьеПолучите нормализованный Git Commit в одной статье
Процесс развития
install
$ yarn install
зависимости пакета
Установите зависимости для указанного пакета:
# 或者(推荐)
$ lerna add lodash packages/module-1
# 或者
$ lerna add lodash --scope=module-1
# 或者
$ lerna add lodash **/module-1
# 或者
$ yarn workspace module-1 add lodash
Установите зависимости для всех пакетов:
$ lerna add lodash
Зависимости между рабочими пространствами
$ lerna add module-2 --scope module-1
# 或者
$ lerna add module-2 packages/module-1
Общие зависимости инструментов
$ yarn add -WD typescript
lerna.json
- версия: версия текущего репозитория, пожалуйста, установите независимый режим на
independent
- npmClient: укажите клиентскую программу для запуска команды (по умолчанию npm)
- ignoreChanges: один не включен в
lerna changed/publish
Массив глобусов. Используйте это, чтобы заблокировать выпуск ненужных обновлений, таких как исправленияREADME.md
- command
- publish
- реестр: установите собственный прокси-сервер npm (например, частный сервер, созданный с помощью verdaccio)
- обычные коммиты:
lerna version
Автоматически определять скачки версий и генерировать файлы CHANGELOG - message: Пользовательское сообщение фиксации при публикации. Для получения подробной информации, пожалуйста, проверьте@lerna/version
- publish
npm scripts
{
"scripts": {
"release:beta": "lerna publish --canary --pre-dist-tag=beta --preid=beta --yes",
"release:rc": "lerna publish prerelease --pre-dist-tag=rc --preid=rc",
"release:next": "lerna publish prerelease --pre-dist-tag=next --preid=next",
"release:preminor": "lerna publish preminor --pre-dist-tag=next --preid=next",
"release:premajor": "lerna publish premajor --pre-dist-tag=next --preid=next",
"release": "lerna publish",
"release:minor": "lerna publish minor",
"release:major": "lerna publish major",
"commit": "git cz"
}
}
Эта статья была впервые опубликована в "Официальный сайт Луожу", синхронизировано с официальным аккаунтом"Дом утреннего чая в Луочжу"а также"Колонка самородков".