æ¬å¤å¿åæ¨å¨å¿«éçè§£ Lerna v6 ææ¶åçä¸»è¦æ¦å¿µï¼æ¾ç¤ºäºå®ç常ç¨å½ä»¤ä½¿ç¨æ¸ å
ç°ä»£æå»ºç³»ç»ï¼ç¨äºç®¡çåå叿¥èªåä¸åå¨åºçå¤ä¸ª JavaScript/TypeScript å ã
$ npx lerna@latest init
ä¸é¢æ¯ç¤ºä¾ç®å½ç»æ
âââ README.md
âââ remixapp # web åºç¨ (remixapp)
â  âââ src
â  âââ package.json
â
âââ packages
â  âââ footer # ç»ä»¶(@remixapp/footer)
â â  âââ src
â â  âââ package.json
â â
â  âââ header # ç»ä»¶(@remixapp/header)
â Â Â âââ src
â Â Â âââ package.json
â
âââ lerna.json
âââ package.json
å®å¨ package.json ä¸ä¾èµäºå®ä»¬ï¼å¦ä¸æç¤ºï¼
"dependencies": {
// ....
"@remixapp/header": "*",
"@remixapp/footer": "*"
}
remixapp åºç¨ç¨åºå¯¼å
¥é¡µçå页èåºï¼å¦ä¸æç¤ºï¼
import { Header } from "header";
import { Footer } from "footer";
export default function Home() {
return (
<>
<Header />
<div>Content!</div>
<Footer />
</>
);
}
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"useWorkspaces": true,
"version": "0.0.0"
}
å¨ lerna.json ä¸é
ç½® useWorkspaces åè¯ Lerna å°å
龿¥è¿ç¨å§æç»ä½ çå
管çå¨ (æ¤åè½ç± npmãyarn å pnpm æ¯æ)ã
npx lerna run test --scope=header # å个
å¤ä¸ªä»»å¡è¿è¡
npx lerna run test --scope=header,footer
å¿½ç¥ header,footer å
¶å®å
ä¸è¿è¡ä»»å¡è¿è¡
npx lerna run build --ignore=header,footer
# 卿æå
å«å®çå
ä¸è¿è¡ npm run my-script
$ lerna run <script> -- [..args]
$ lerna run test
$ lerna run build
# è§çææå
并卿´æ¹æ¶è½¬æ¢ï¼æµå¼åç¼è¾åº
$ lerna run --parallel watch
# 卿æå
ä¸è¿è¡å½ä»¤
$ lerna exec -- <command> [..args]
$ lerna exec -- rm -rf ./node_modules
$ lerna exec -- protractor conf.js
| :- | :- |
|---|---|
--npm-client <client> # | å¿
é¡»æ¯ç¥éå¦ä½è¿è¡ npm çå½å¨æèæ¬ç坿§è¡æä»¶ï¼é»è®¤å¼æ¯ npm |
--stream # | ç«å³ä»åè¿ç¨æµå¼è¾åºï¼ä»¥åå§å å称为åç¼ |
--parallel # | ç±»ä¼¼äº --stream ä½å®å
¨å¿½ç¥å¹¶ååæææåºï¼ç«å³å¨ææå¹é
çå
ä¸è¿è¡ç»å®çå½ä»¤æèæ¬ï¼å¹¶å¸¦æåç¼æµè¾åº |
--no-bail # | é»è®¤æ
åµä¸ï¼å¦æä»»ä½èæ¬è¿è¡è¿åéé¶éåºä»£ç ï¼lerna run å°éåºå¹¶åºç°é误ãä¼ é --no-bail 以ç¦ç¨æ¤è¡ä¸º |
--no-prefix # | å½è¾åºä¸ºæµå¼ä¼ è¾ï¼--stream æ --parallelï¼æ¶ç¦ç¨å
åç§°åç¼ãå½å°ç»æä¼ éå°å
¶ä»è¿ç¨ï¼ä¾å¦ç¼è¾å¨æä»¶ï¼æ¶ï¼æ¤éé¡¹å¾æç¨ |
--profile # | åæèæ¬æ§è¡å¹¶çææ§è½é ç½®æä»¶ |
--profile-location <location> # | æ¨å¯ä»¥ä¸ºæ§è½é ç½®æä»¶è¾åºæä¾èªå®ä¹ä½ç½®ãæä¾çè·¯å¾å°ç¸å¯¹äºå½åå·¥ä½ç®å½è¿è¡è§£æã |
useNx=false # | éè¿å° useNx 设置为 falseï¼æ¨å¯ä»¥ä½¿ç¨ lerna ä¸çéçä»»å¡è¿è¡å®ç° (p-map å p-queue)ï¼è䏿¯ä½¿ç¨ç± Nx æä¾æ¯æçé»è®¤ç°ä»£ä»»å¡è¿è¡å¨å®ç°ã |
# åå¸èªä¸æ¬¡åå¸ä»¥æ¥å·²æ´æ¹ç软件å
$ lerna publish
# æ¾å¼åå¸å¨å½åæäº¤ä¸æ è®°çå
$ lerna publish from-git
# æ¾å¼å叿³¨å表ä¸ä¸å卿æ°çæ¬ç软件å
$ lerna publish from-package
# 使ç¨ä¸ä¸ä¸ªè¯ä¹é¢åå¸çæ¬ï¼ä¾å¦
$ lerna publish --canary
# 1.0.0 => 1.0.1-alpha.0+${SHA}
# èªä¸æ¬¡æäº¤ä»¥æ¥æ´æ¹çå
# éåçéä¸éåå¸å°äº§ç1.0.1-alpha.1+${SHA}ç
$ lerna publish --canary --preid beta
# 1.0.0 => 1.0.1-beta.0+${SHA}
# 以䏿¯çä»·çï¼
$ lerna publish --canary minor
$ lerna publish --canary preminor
# 1.0.0 => 1.1.0-alpha.0+${SHA}
| :- | :- |
|---|---|
--canary # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼ä»¥æ´ç²¾ç»çæ¹å¼ï¼æ¯æ¬¡æäº¤ï¼åå¸å |
--contents <dir> # | è¦åå¸çåç®å½ã å¿
é¡»éç¨äºææå
ï¼å¹¶ä¸å¿
é¡»å
å« package.json æä»¶ |
--dist-tag <tag> # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼å°ä½¿ç¨ç»å®ç npm dist-tagï¼é»è®¤ä¸º latestï¼åå¸å° npm |
--git-head <sha> # | æå
tarball æ¶å°æ¾å¼ SHA 设置为æ¸
åä¸ç gitHeadï¼ä»
å
è®¸ä½¿ç¨ from-package ä½ç½® |
--graph-type <all|dependencies> # | è®¾ç½®å¨æå»ºå
徿¶ä½¿ç¨åªç§ä¾èµé¡¹ãé»è®¤å¼æ¯ä¾èµé¡¹ï¼å³ä»
å
å«å
ç package.json çä¾èµé¡¹é¨åä¸ååºçå
|
--ignore-scripts # | ä¼ éæ¶ï¼æ¤æ å¿å°å¨ lerna å叿é´ç¦ç¨è¿è¡çå½å¨æèæ¬ |
--ignore-prepublish # | ä¼ éæ¶ï¼æ¤æ å¿å°ç¦ç¨å¨ lerna å叿é´è¿è¡å·²å¼ç¨çé¢åå¸èæ¬ |
--legacy-auth # | åå¸éè¦èº«ä»½éªè¯çå
æ¶ï¼æ¨æ£å¨ä½¿ç¨ä»
ä½¿ç¨æ§ç Base64 ç¨æ·å:å¯ç çå
é¨æç®¡ NPM 注å表ãè¿ä¸ NPM åå¸ _auth æ å¿ç¸å |
--no-git-reset # | é»è®¤æ
åµä¸ï¼lerna publish ç¡®ä¿å¯¹å·¥ä½æ ç任使´æ¹é½å·²éç½® |
--no-granular-pathspec # | é»è®¤æ
åµä¸ï¼lerna publish å°å°è¯ï¼å¦æå¯ç¨ï¼git checkout ä»
å¨åå¸è¿ç¨ä¸ä¸´æ¶ä¿®æ¹çå¶å
æ¸
å |
--verify-access # | ä»åå²ä¸çï¼lerna è¯å¾éè¿ä½¿ç¨ç»å®ä»¤çæ§è¡ä¸äºæ¢å å¼ npm API è¯·æ±æ¥å¿«éè§£å³ææ/身份éªè¯é®é¢ |
--otp # | åå¸éè¦åé身份éªè¯çå
æ¶ï¼æ¨å¯ä»¥ä½¿ç¨ --otp æå®ä¸æ¬¡æ§å¯ç |
--preid # | ä¸ååç lerna çæ¬é项ä¸åï¼è¯¥é项åªéç¨äº --canary çæ¬è®¡ç® |
--pre-dist-tag <tag> # | ä¸ --dist-tag ç工使¹å¼ç¸åï¼ä½ä»
éç¨äºä½¿ç¨é¢åå¸çæ¬åå¸ç软件å
|
--registry <url> # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼è½¬åç npm å½ä»¤å°ä¸ºæ¨çå
ä½¿ç¨æå®ç注å表 |
--tag-version-prefix # | æ¤é项å
许æä¾èªå®ä¹åç¼è䏿¯é»è®¤åç¼ï¼v |
--temp-tag # | ä¼ éæ¶ï¼æ¤æ å¿å°æ´æ¹é»è®¤åå¸è¿ç¨ï¼é¦å
å°æææ´æ¹çå
åå¸å°ä¸´æ¶ dist-tag(lerna-temp)ï¼ç¶åå°æ°çæ¬ç§»å¨å° --dist-tag é
ç½®ç dist-tag (é»è®¤latest) |
--yes # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼lerna publish å°è·³è¿ææç¡®è®¤æç¤º |
| :- | :- |
|---|---|
--no-verify-access # | æ§çæ¢å
访é®éªè¯ç°å¨é»è®¤å
³éï¼å æ¤ä¸éè¦ --no-verify-access |
--skip-npm # | ç´æ¥è°ç¨ lerna version |
"publishConfig": {
"access": "public",
"registry": "http://my-registry.com",
"tag": "flippin-sweet",
"directory": "dist"
}
| :- | :- |
|---|---|
access # | è¦åå¸å
·æèå´çå
(ä¾å¦ï¼@mycompany/rocks) |
registry # | éè¿è®¾ç½®æ³¨å表æ¥èªå®ä¹æ¯ä¸ªå çæ³¨å表 |
tag # | æ¨å¯ä»¥éè¿è®¾ç½®æ ç¾æ¥èªå®ä¹æ¯ä¸ªå
ç dist-tag |
directory # | è¿ä¸ª éæ å åæ®µå
许æ¨å --contents 䏿 ·èªå®ä¹åå¸çåç®å½ï¼ä½åºäºæ¯ä¸ªå
|
$ lerna version 1.0.1 # æç¡®ç
$ lerna version patch # semver å
³é®å
$ lerna version # ä»æç¤ºä¸éæ©
$ lerna version [major | minor | ...]
# 使ç¨ä¸ä¸ä¸ªè¯ä¹çæ¬å¼
# è¿ä¼è·³è¿â为...éæ©æ°çæ¬âæç¤º
# å¼ºå¶ææå
çæ¬å
$ lerna version --force-publish
$ lerna version -m "chore(doc): publish %s"
# æäº¤æ¶æ¯ = "chore(doc): publish v1.0.0"
$ lerna version -m "chore(doc): publish %v"
# æäº¤æ¶æ¯ = "chore(doc): publish 1.0.0"
major é大çminor 次è¦çpatch 修补premajor 主è¦çpreminor å级prepatch é¢è¡¥ä¸prerelease é¢åè¡| :- | :- |
|---|---|
--allow-branch <glob> # | ä¸å¯ç¨ lerna version ç git 忝å¹é
ç glob ç½åå |
--amend # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼lerna version å°å¨å½åæäº¤ä¸æ§è¡æææ´æ¹ï¼è䏿¯æ·»å æ°ç |
--changelog-preset # | é»è®¤æ åµä¸ï¼æ´æ¹æ¥å¿é¢è®¾è®¾ç½®ä¸º angular |
--conventional-commits # | 使ç¨å¸¸è§æäº¤è§èæ¥ç¡®å®çæ¬ bump å¹¶çæ CHANGELOG.md æä»¶ |
--conventional-graduate # | å°ä½¿ç¨ * 对æå®çå
(éå·åé)æææå
è¿è¡å级 |
--conventional-prerelease # | é¢åå¸çæ¬å叿å®çå |
--create-release <type> # | æ ¹æ®æ´æ¹çå
å建æ£å¼ç GitHub æ GitLab çæ¬ |
--exact # | 卿´æ°çå
ä¸ç²¾ç¡®æå®æ´æ°çä¾èµé¡¹ï¼æ²¡ææ ç¹ç¬¦å·ï¼ï¼è䏿¯ä¸ semver å
¼å®¹ï¼ä½¿ç¨^ï¼ |
--force-publish # | 强å¶å叿å®çå |
--git-remote <name> # | æ git æ´æ¹æ¨éå°æå®çè¿ç¨ä½ç½®ï¼è䏿¯origin |
--ignore-changes # | æ£æµæ´æ¹çå
æ¶å¿½ç¥ä¸ glob å¹é
çæä»¶ä¸çæ´æ¹ |
--ignore-scripts # | ç¦ç¨å¨ lerna version æé´è¿è¡ççå½å¨æèæ¬ |
--include-merged-tags # | 卿£æµå°æ´æ¹çå æ¶å æ¬æ¥èªåå¹¶åæ¯çæ ç¾ |
--message <msg> # | æ¤é项å«å为 -m ä»¥ä¸ git commit è¿è¡å¥å¶æ ¡éª |
--no-changelog # | 使ç¨å¸¸è§æäº¤æ¶ï¼ä¸è¦çæä»»ä½ CHANGELOG.md æä»¶ |
--no-commit-hooks # | å
许 git commit hooks å¨æäº¤çæ¬æ´æ¹æ¶è¿è¡ãéè¿ --no-commit-hooks ç¦ç¨æ¤è¡ä¸º |
--no-git-tag-version # | å°æäº¤å¯¹ package.json æä»¶çæ´æ¹å¹¶æ è®°åå¸ãéè¿ --no-git-tag-version ç¦ç¨è¯¥è¡ä¸º |
--no-granular-pathspec # | ä»
æ·»å å¨çæ¬æ§å¶è¿ç¨ä¸æ´æ¹çå¶å
æ¸
å(å¯è½è¿æåæ´æ¥å¿)ãè¿äº§çäº git add --packages/*/package.json ççä»·ç©ï¼ä½éå¯¹æ´æ¹çå
容é身å®å¶ |
--no-private # | å¨éæ©çæ¬ãæäº¤åæ è®°çæ¬æ¶å
å«ç§æå
ãéè¿ --no-private ç¦ç¨æ¤è¡ä¸º |
--no-push # | å°å·²æäº¤åæ è®°çæ´æ¹æ¨éå°é
ç½®ç git remoteãéè¿ --no-push ç¦ç¨æ¤è¡ä¸º |
--preid # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼lerna çæ¬å°ä½¿ç¨æå®çé¢å叿 è¯ç¬¦å¢å premajorãpreminorãprepatch æ prerelease semver bumps |
--sign-git-commit # | æ¤é项类似äºååç npm çæ¬é项 |
--sign-git-tag # | æ¤é项类似äºååç npm çæ¬é项 |
--force-git-tag # | æ¤éé¡¹æ¿æ¢ä»»ä½ç°ææ è®°è䏿¯å¤±è´¥ |
--tag-version-prefix # | æ¤é项å
许æä¾èªå®ä¹åç¼è䏿¯é»è®¤åç¼ï¼v |
--yes # | ä½¿ç¨æ¤æ å¿è¿è¡æ¶ï¼lerna çæ¬å°è·³è¿ææç¡®è®¤æç¤º |
| :- | :- |
|---|---|
--cd-version # | å° semver å
³é®åä¼ éç» bump ä½ç½® |
--repo-version # | å°æç¡®ççæ¬å·ä¼ éç» bump ä½ç½® |
--skip-git # | 请æ¹ç¨ --no-git-tag-version å --no-push |
å°æ¬å°å
龿¥å¨ä¸èµ·ï¼å¹¶å®è£
å
¶ä½çå
ä¾èµé¡¹
$ lerna bootstrap -- --production \
--no-optional
$ lerna bootstrap --hoist
| :- | :- |
|---|---|
--hoist [glob] # | å¨ repo æ ¹ç®å½å®è£
ä¸ glob å¹é
çå¤é¨ä¾èµé¡¹ï¼ä»¥ä¾¿å®ä»¬å¯ç¨äºææå
|
--strict # | 䏿å (hoist) ä¸èµ·ä½¿ç¨æ¶ï¼ä¼å¨ååºçæ¬è¦ååæåºéè¯¯å¹¶åæ¢å¼å¯¼ |
--nohoist [glob] # | ä¸è¦å¨ repo æ ¹ç®å½å®è£
ä¸ glob å¹é
çå¤é¨ä¾èµé¡¹ãè¿å¯ç¨äºéæ©ä¸æåæäºä¾èµé¡¹ |
--ignore # | å½ä¸ bootstrap å½ä»¤ä¸èµ·ä½¿ç¨æ¶ï¼è¿å¯ä»¥å¨ lerna ä¸è®¾ç½® --ignore æ å¿ |
| :- | :- |
|---|---|
--ignore-prepublish # | è·³è¿é»è®¤å¨å¼å¯¼ç¨åºå ä¸è¿è¡çé¢åå¸çå½å¨æèæ¬ |
--ignore-scripts # | è·³è¿é常å¨å¼å¯¼ç¨åºå ä¸è¿è¡ï¼åå¤çï¼çä»»ä½çå½å¨æèæ¬ |
--registry <url> # | æå® npm å çä»åºå°å |
--npm-client <client> # | å¿
é¡»æ¯ç¥éå¦ä½å®è£
npm å
ä¾èµé¡¹ç坿§è¡æä»¶ |
--use-workspaces # | å¯ç¨ä¸ Yarn Workspaces çéæ(ä» yarn@0.27+ å¼å§å¯ç¨) |
--no-ci # | å¨ CI ç¯å¢ä¸è°ç¨ npm ci è䏿¯ npm install |
--force-local # | æ¤æ å¿ä¼å¯¼è´å¼å¯¼å½ä»¤å§ç»å¯¹æ¬å°ä¾èµé¡¹è¿è¡ç¬¦å·é¾æ¥ï¼èä¸ç®¡å¹é ççæ¬èå´å¦ä½ |
$ lerna info
lerna notice cli v6.0.0
Environment info:
System(ç³»ç»):
OS: macOS 12.2
CPU: (8) x64 Apple M1
Binaries(äºè¿å¶æä»¶):
Node: 16.17.0 - /usr/local/bin/node
Yarn: 1.22.10 - /usr/local/bin/yarn
npm: 8.5.0 - /usr/local/bin/npm
Utilities(å®ç¨ç¨åº):
Git: 2.33.0 - /opt/homebrew/bin/git
npmPackages:
lerna: ^6.0.0 => 6.0.0
$ lerna exec --scope my-component -- ls -la
$ lerna run --scope toolbar-* test
$ lerna run --scope package-1 --scope *-2 lint
$ lerna exec --ignore package-{1,2,5} -- ls -la
$ lerna run --ignore package-1 test
$ lerna run --ignore package-@(1|2) --ignore package-3 lint
# ååºèªææ°æ ç¾ä»¥æ¥å·²æ´æ¹çå
çå
容
$ lerna exec --since -- ls -la
# å¯¹èª main 以æ¥åçæ´æ¹çææå
è¿è¡æµè¯
$ lerna run test --since main
# ååºèª some-branch 以æ¥åçååçææå
$ lerna ls --since some-branch
# my-component åå
¶ææä¾èµé¡¹å°è¢«å¼å¯¼
$ lerna bootstrap --scope my-component --include-dependencies
$ lerna bootstrap --scope "package-*" --ignore "package-util-*" --include-dependencies
# ææå¹é
âpackage-util-*â çå
é½å°è¢«å¿½ç¥ï¼é¤éå®ä»¬æ¯
# ä¾èµäºåç§°ä¸ âpackage-*â å¹é
çå
| :- | :- |
|---|---|
--scope <glob> # | ä»
å
æ¬åç§°ä¸ç»å® glob å¹é
çå
|
--ignore <glob> # | æé¤åç§°ä¸ç»å® glob å¹é
çå
|
--no-private # | æé¤ç§æå |
--since [ref] # | ä»
å
æ¬èªæå® ref 以æ¥å·²æ´æ¹çå
|
--exclude-dependents # | ä½¿ç¨ --since è¿è¡å½ä»¤æ¶æé¤ææä¼ éä¾èµé¡¹ï¼è¦çé»è®¤çâchangedâç®æ³ |
--include-dependents # | æ 论 --scopeã--ignore æ --since æ¯ä»ä¹ï¼å¨è¿è¡å½ä»¤æ¶é½å
æ¬ææä¼ éä¾èµé¡¹ |
--include-dependencies # | æ 论 --scopeã--ignore æ --since # æ¯ä»ä¹ï¼å¨è¿è¡å½ä»¤æ¶é½å
æ¬ææä¼ éä¾èµé¡¹ |
--include-merged-tags # | ä½¿ç¨ --since è¿è¡å½ä»¤æ¶å
æ¬æ¥èªåå¹¶åæ¯çæ ç¾ |
ååºæ¬å°ç¨åºå ï¼ä¹å°éææå¯ç¨çè¿æ»¤é项
# ä¸ lerna list ç¸åï¼å®æ¬èº«ç±»ä¼¼äº ls å½ä»¤
lerna ls
# ç¸å½äº lerna ls -lï¼æ¾ç¤ºé¿è¾åº
lerna ll
# ç¸å½äº lerna ls -laï¼æ¾ç¤ºææå
(å
æ¬ç§æå
ï¼
lerna la
| :- | :- |
|---|---|
--json | æ¾ç¤ºä¸º JSON # |
--ndjson | æ¢è¡ç¬¦åé # |
-a,--all | ææå # |
-l,--long | æ¾ç¤ºæ©å±ä¿¡æ¯ # |
-p,--parseable | æ¾ç¤ºå¯è§£æçè¾åº # |
--toposort | ææææåº # |
--graph | JSON æ ¼å¼é»æ¥ä¾èµå ³ç³»å¾ # |
å建æ°ç Lerna ä»åºæå°ç°æä»åºå级å°å½åçæ¬ Lerna
lerna ä¸åå¨ï¼è¯·å°å
¶æ·»å å° package.json ä¸ç devDependencylerna.json é
ç½®æä»¶æ¥åå¨çæ¬å·.gitignoreï¼åçæä¸ä¸ªå¿½ç¥æä»¶$ lerna init --independent
| :- | :- |
|---|---|
--independent # | 使ç¨ç¬ç«çæ¬æ§å¶æ¨¡å¼ # |
--exact # | æ·»å ææ´æ° lerna çæ¬å°çæ¬æ¶å°ä½¿ç¨æå
¥ç¬¦èå´ # |
å®å°é
ç½® lerna.json ä»¥å¼ºå¶ææåç»æ§è¡å®å
¨å¹é
{
"command": {
"init": {
"exact": true
}
},
"version": "0.0.0"
}
å°ä¸ä¸ªå
导å
¥å°å¸¦ææäº¤åå²ç monorepo
# å¼å§ä½¿ç¨ Lerna
$ git init lerna-repo && cd lerna-repo
$ npx lerna init
$ npm install
# æ·»å æäº¤
$ git add .
# å¦ææ²¡ææäº¤ï¼å¯¼å
¥å½ä»¤å°å¤±è´¥
$ git commit -m "Initial lerna commit"
# 导å
¥å
¶ä»åå¨åº
$ npx lerna import <å¤é¨åå¨åºçè·¯å¾>
$ npx lerna import ~/Product --flatten
é项
| :- | :- |
|---|---|
--flatten # | å½å¯¼å ¥å ·æå²çªçåå¹¶æäº¤çåå¨åºæ¶ï¼å¯¼å ¥å½ä»¤å°æ æ³å°è¯åºç¨æææäº¤ |
--dest # | 导å
¥ä»åºæ¶ï¼å¯ä»¥éè¿ lerna.json ä¸ååºçç®å½æ¥æå®ç®æ ç®å½ |
--preserve-commit # | æ¯ä¸ª git æäº¤é½æä¸ä¸ªä½è åä¸ä¸ªæäº¤è |
å°ä¾èµé¡¹æ·»å å°å¹é çå
$ lerna add <package>[@version] \
[--dev] [--exact] [--peer]
é项
| :- | :- |
|---|---|
--dev # | å°æ°å
æ·»å å° devDependencies |
--exact # | æ·»å å
·æç²¾ç¡®çæ¬ï¼ä¾å¦ 1.0.1ï¼è䏿¯é»è®¤ ^ semver èå´ï¼ä¾å¦ ^1.0.1ï¼çæ°å
|
--peer # | å°æ°å
æ·»å å° peerDependencies |
--registry <url> # | 使ç¨èªå®ä¹æ³¨å表å®è£ ç®æ å |
--no-bootstrap # | è·³è¿é¾å¼ lerna bootstrap |
å®ä¾
# å° mod-1 å
æ·»å å°âprefix-âåç¼æä»¶å¤¹ä¸çå
ä¸
$ lerna add mod-1 packages/prefix-*
# å° mod-1 å®è£
å°mod-2
$ lerna add mod-1 --scope=mod-2
# å¨ devDependencies ä¸å®è£
mod-1 å° mod-2
$ lerna add mod-1 --scope=mod-2 --dev
# å¨ peerDependencies ä¸å®è£
mod-1 å° mod-2
$ lerna add mod-1 --scope=mod-2 --peer
# å¨é¤ mod-1 ä¹å¤çæææ¨¡åä¸å®è£
mod-1
$ lerna add mod-1
# å¨æææ¨¡åä¸å®è£
babel-core
$ lerna add babel-core
æ¯è¾èªä¸æ¬¡åå¸ä»¥æ¥çææå æå个å
$ lerna diff [package]
$ lerna diff
$ lerna diff package-name # åºåä¸ä¸ªç¹å®çå
ç±»ä¼¼äº lerna changedï¼æ¤å½ä»¤è¿è¡ git diff
仿æå
ä¸å é¤ node_modules ç®å½
$ lerna clean
æ¥åææè¿æ»¤é项ãlerna clean ä¸ä¼ä»æ ¹ node_modules ç®å½ä¸å 餿¨¡åï¼å³ä½¿æ¨å¯ç¨äº --hoist é项
è¿è¡è®¾ç½®åºæ¬ç¼åé项çå导
$ lerna add-caching
å°ææç¸äºä¾èµçå 符å·é¾æ¥å¨ä¸èµ·
$ lerna link
--force-local 设置ä¼å¯¼è´é¾æ¥å½ä»¤å§ç»å¯¹æ¬å°ä¾èµé¡¹è¿è¡ç¬¦å·é¾æ¥
æ´æ°é ç½®æä»¶ä»¥å¹é å½åå®è£ ç lerna çæ¬
$ npm i lerna@latest
$ lerna repair
lerna repair å¨åçº§åææç¨ï¼å¯ç¡®ä¿åºç¨æ°çæ¬ lerna çä»»ä½é
ç½®æä»¶æ´æ¹