lerna 의 기초 사용

11601 단어
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 의 명령 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/*"]
    }
    
  • version, 현재 라 이브 러 리 버 전
  • npmClient, 지정 한 명령 에 사용 할 수 있 는 client, 기본 값 은 npm, yarn
  • 으로 설정 할 수 있 습 니 다.
  • command. publish. ignoreChanges, 디 렉 터 리 나 파일 의 변경 사항 이 publish 되 지 않도록 지정 할 수 있 습 니 다
  • command. boottstrap. ignore, boottstrap 명령 에 영향 을 받 지 않 는 가방 지정
  • command. bootstrap. npmClient Args, lerna bootstrap 명령 에 기본적으로 전 달 된 인자 지정
  • command. boottstrap. scope, 그 가방 들 을 지정 하면 lerna boottstrap 명령 의 영향 을 받 습 니 다
  • 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 에 보 냅 니 다.
    버 전 번호 따 르 기 independentOptions
    --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 은 다음 과 같은 작업 을 했 습 니 다.
  • 가방 당 설치 의존
  • 서로 의존 하 는 라 이브 러 리 를 구체 적 인 디 렉 터 리 로 연결 합 니 다
  • npm run prepublish 실행
  • npm run prepare 실행
  • - 후 옵션 을 추가 하여 npm cient 인 자 를 설정 할 수 있 습 니 다.
    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">
                        
                         
                    

    좋은 웹페이지 즐겨찾기