lerna 의 기초 사용
개요
lerna 는 GitHub 에서 개 원 된 js 코드 라 이브 러 리 관리 소프트웨어 로 서로 결합 이 크 고 독립 된 js git 라 이브 러 리 를 관리 하 는 데 사용 된다.각 라 이브 러 리 간 의 수정 이 혼 란 스 럽 고 추적 하기 어 려 운 문 제 를 해결 하 다.lerna 는 이런 상황 에서 의 작업 흐름 을 최적화 할 수 있다.
일부 기능 이 비교적 완전한 라 이브 러 리 에 대해 우 리 는 각 작은 기능 을 독립 된 npm 라 이브 러 리 로 나 누 는데 그들 은 비교적 강 한 의존 관 계 를 가진다.예 를 들 어 Babel, React 등 오픈 소스 코드 는 모두 이런 방식 으로 처리 된다.
코드 라 이브 러 리 구조
lerna 가 관리 하 는 라 이브 러 리 파일 구 조 는 다음 과 같 습 니 다.
my-lerna-repo/
package.json
packages/
package-1/
package.json
package-2/
package.json
레 나 는 주로 무엇 을 했 습 니까?
lerna bootstrap
을 통 해 코드 라 이브 러 리 를 링크 합 니 다.Get Started
다음은 3. x 버 전의 lerna 를 사용 하여 테스트 하고 공식 적 으로 도 2. x 대신 3. x 를 사용 하 는 것 을 권장 합 니 다.
우선, lerna 라 이브 러 리 초기 화
cd lerna-repo
lerna init
기본적으로 lerna. json 과 packages 디 렉 터 리 를 만 듭 니 다. 다음 과 같 습 니 다.
lerna-repo/
packages/
package.json
lerna.json
레 나 어떻게 일 했 어 요?
기본 lerna 는 두 가지 관리 모드, 고정 모드 와 독립 모드 가 있 습 니 다.
고정 모드
고정 모드, lerna. json 버 전 을 통 해 버 전 관 리 를 진행 합 니 다.
lerna publish
명령 을 실행 할 때, 지난번 발표 에서 한 모듈 만 수정 되면, 해당 모듈 의 버 전 을 새로운 버 전 번호 로 업데이트 하고, 수 정 된 라 이브 러 리 만 발표 할 수 있 습 니 다.이런 패턴 도 바벨 이 사용 하 는 방식 이다.모든 버 전이 함께 변경 되 기 를 원한 다 면 minor 버 전 번 호 를 업데이트 할 수 있 습 니 다. 그러면 모든 모듈 이 버 전 을 업데이트 할 수 있 습 니 다.
독립 모드
독립 모드, init 는 옵션
lerna publish
을 설정 해 야 합 니 다. 독립 모드 는 관리자 가 라 이브 러 리 마다 버 전 번 호 를 따로 바 꿀 수 있 도록 합 니 다. 발표 할 때마다 변 경 된 라 이브 러 리 마다 버 전 번 호 를 지정 해 야 합 니 다.이 경우 --independent
버 전 번 호 는 변 하지 않 고 기본 값 lerna.json
입 니 다.lerna. json 해석
{
"version": "1.1.3",
"npmClient": "npm",
"command": {
"publish": {
"ignoreChanges": [
"ignored-file",
"*.md"
]
},
"bootstrap": {
"ignore": "component-*",
"npmClientArgs": ["--no-package-lock"]
}
},
"packages": ["packages/*"]
}
lerna publish
새로운 라 이브 러 리 버 전 발표
lerna publish // commit
lerna publish // commit-id
Options
canary
모든 commt 를 독립 적 으로 발표 할 수 있 습 니 다. tag 를 하지 않 습 니 다.
lerna publish --canary
# 1.0.0 => 1.0.1-alpha.0+${SHA} of packages changed since the previous commit
# a subsequent canary publish will yield 1.0.1-alpha.1+${SHA}, etc
lerna publish --canary --preid beta
# 1.0.0 => 1.0.1-beta.0+${SHA}
# The following are equivalent:
lerna publish --canary minor
lerna publish --canary preminor
# 1.0.0 => 1.1.0-alpha.0+${SHA}
--npm-client
기본 npm
--npm-tag
발 표 된 버 전에 dist - tag 추가
--no-verify-access
사용자 가 발표 한 권한 검증 을 하지 않 습 니 다.
--registry
지정 한 레 지 스 트 리
--yes
ci 자동 입력 yes
--temp-tag
쓸데없다
lerna version
이 명령 은 수 정 된 가방 을 식별 합 니 다. > 새 버 전 번 호 를 만 듭 니 다. > package. json 을 수정 합 니 다. > 수정 을 제출 하고 버 전의 tag 를 제출 합 니 다. > git 에 보 냅 니 다.
버 전 번호 따 르 기
independent
Options --allow-branch
git 의 어떤 지점 이 lerna version 명령 을 실행 할 수 있 는 지 설정 하고 lerna. json 에서 설정 할 수 있 습 니 다.
{
"command": {
"publish": {
"allowBranch": "master"
}
}
}
{
"command": {
"publish": {
"allowBranch": ["master", "feature/*"]
}
}
}
--amend
버 전의 수정 사항 을 이전 commt 에 통합 하고 푸 시 하지 않 습 니 다.
--commit-hooks
대응 하 는 commt - hook, 기본 트 루 실행
--conventional-commits
이 옵션 을 사용 하면 lerna 는 로 그 를 수집 하여 CHANGELOG 를 자동 으로 생 성 합 니 다.
--changelog-preset
changelog 생 성 플러그 인 을 수정 합 니 다. 기본 값 은 angular 입 니 다.
--exact
??? 별로 효과 가 없어 요.
--force-publish
수정 되 었 든 안 되 었 든 모든 가방 의 버 전 을 강제로 변경 합 니 다.
--ignore-changes
일부 파일 의 변경 사항 검사 무시
lerna version --ignore-changes '**/*.md' '**/__tests__/**'
lerna. json 에서 도 설정 할 수 있 습 니 다.
{
"ignoreChanges": [
"**/__fixtures__/**",
"**/__tests__/**",
"**/*.md"
]
}
--git-remote
원본 대신 수정 사항 을 다른 원본 으로 보 냅 니 다.
--git-tag-version
git 태그 추가, 기본 트 루
--message
자동 으로 생 성 되 는 log 대신 제출 정 보 를 지정 합 니 다.
lerna. json 에서 설정 할 수 있 습 니 다.
{
"command": {
"publish": {
"message": "chore(release): publish %s"
}
}
}
lerna bootstrap
boottstrap 은 다음 과 같은 작업 을 했 습 니 다.
lerna bootstrap -- --production --no-optional
lerna. json 에서 도 설정 할 수 있 습 니 다.
{
...
"npmClient": "yarn",
"npmClientArgs": ["--production", "--no-optional"]
}
Options
--hoist
이 옵션 을 사용 하면 루트 디 렉 터 리 에 공통 으로 의존 하 는 라 이브 러 리 를 설치 하 는 nodemodules 에서 버 전 통일
--ignore
일부 디 렉 터 리 무시, 설치 의존 하지 않 음
lerna bootstrap --ignore component-*
lerna. json 에서 도 설정 할 수 있 습 니 다.
{
"version": "0.0.0",
"command": {
"bootstrap": {
"ignore": "component-*"
}
}
}
--ignore-scripts
prepare 와 같은 선언 주기 스 크 립 트 명령 을 실행 하지 않 습 니 다.
--registry
지정 한 레 지 스 트 리
--npm-client
설치 용 npm client 지정
lerna bootstrap --npm-client=yarn
lerna. json 에서 도 설정 할 수 있 습 니 다.
{
...
"npmClient": "yarn"
}
--use-workspace
yarn workspace 사용 안 해 봤 어 요.
--no-ci
npm ci 를 기본적으로 호출 하여 npm install 을 교체 하고 옵션 을 사용 하여 설정 을 수정 합 니 다.
lerna list
현재 lerna 라 이브 러 리 에 포 함 된 가방 을 열거 합 니 다.
Options
--json
json 형식 으로 정보 보이 기
--all
private 를 포함 하 는 가방 보이 기
--parseable
다음 형식 을 보 여 줍 니 다: [: flags..]
--long
더 많은 확장 정보 보이 기
lerna changed
마지막 relase tag 이후 수 정 된 가방 을 표시 합 니 다.
lerna diff
마지막 relase tag 이후 수 정 된 가방 의 차 이 를 표시 하고 git diff 를 실행 합 니 다.
lerna exec
모든 패키지 디 렉 터 리 에서 임의의 명령 을 실행 합 니 다.
사용 예시
$ lerna exec -- [..args] # runs the command in all packages
$ lerna exec -- rm -rf ./node_modules
$ lerna exec -- protractor conf.js
$ lerna exec -- npm view \$LERNA_PACKAGE_NAME
$ lerna exec -- node \$LERNA_ROOT_PATH/scripts/some-script.js
Options
--concurrency
기본 명령 을 병행 할 때, 우 리 는 병 발 량 을 1 로 설정 할 수 있 습 니 다.
lerna exec --concurrency 1 -- ls -la
--scope
lerna exec --scope my-component -- ls -la
--stream
교차 병렬 출력 결과
lerna exec --stream -- babel src -d lib
--parallel
--no-bail
기본 lerna exec 는 명령 이 0 이 아 닌 것 으로 되 돌아 오 면 실행 을 중단 합 니 다. 이 매개 변 수 를 설정 하여 0 이 아 닌 것 으로 되 돌아 가 는 것 을 무시 하고 다른 명령 을 계속 수행 합 니 다.
lerna run
패키지 마다 package. json 의 스 크 립 트 명령 을 실행 합 니 다.
$ lerna run -- [..args] # runs npm run my-script in all packages that have it
$ lerna run test
$ lerna run build
# watch all packages and transpile on change, streaming prefixed output
$ lerna run --parallel watch
</code></pre>
<p> lerna exec</p>
<h2>lerna init</h2>
<p> lerna lerna </p>
<ul>
<li> package.json lerna </li>
<li> lerna.json</li>
</ul>
<h3>Options</h3>
<h4>--independent</h4>
<p> </p>
<h4>--exeact</h4>
<p> ?</p>
<h2>lerna add</h2>
<p> </p>
<pre><code class="shell">$ lerna add <package>[@version] [--dev] [--exact]
</code></pre>
<h2>lerna clean</h2>
<p> node_modules</p>
<h2>lerna import</h2>
<p> git lerna </p>
<pre><code class="shell">lerna import <path-to-external-repository>
</code></pre>
<h3>Options</h3>
<h4>--flatten</h4>
<p> merge , commit</p>
<pre><code class="shell">$ lerna import ~/Product --flatten
</code></pre>
<h4>--dest</h4>
<p> (lerna.json )</p>
<pre><code class="shell">$ lerna import ~/Product --dest=utilities
</code></pre>
<h2>lerna link</h2>
<p> </p>
<h2>lerna create</h2>
<p> </p>
<pre><code class="shell">lerna create <name> [loc]
Create a new lerna-managed package
Positionals:
name The package name (including scope), which must be locally unique _and_
publicly available [string] [required]
loc A custom package location, defaulting to the first configured package
location [string]
Command Options:
--access When using a scope, set publishConfig.access value
[choices: "public", "restricted"] [default: public]
--bin Package has an executable. Customize with --bin
<executableName> [default: <name>]
--description Package description [string]
--dependencies A list of package dependencies [array]
--es-module Initialize a transpiled ES Module
--homepage The package homepage, defaulting to a subpath of the root
pkg.homepage [string]
--keywords A list of package keywords [array]
--license The desired package license (SPDX identifier) [default: ISC]
--private Make the new package private, never published
--registry Configure the package's publishConfig.registry [string]
--tag Configure the package's publishConfig.tag [string]
--yes Skip all prompts, accepting default values
</code></pre>
<p> : https://github.com/lerna/lerna</p>
</article>
</div>
</div>
</div>
<!--PC WAP -->
<div id="SOHUCS" sid="1209284717736726528"></div>
<script type="text/javascript" src="/views/front/js/chanyan.js">
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.