lerna 常用命令

lerna 介紹

lerna 處理機構

固定模式(fixed)

所有包是統一的版本號,每次升級,所有包版本統一更新,不管這個包內容改變與否

具體體現在,lerna 的配置文件 lerna.json 中永遠會存在一個確定版本號:

{
"version": "0.0.1"
}

典型例子: babelvue

獨立模式(independent)

每個包是單獨的版本號,每次lerna 觸發發佈命令,每個包的版本都會單獨變化

具體體現在,lerna 的配置文件 lerna.json 中沒有一個確定版本號,而是:

{
"version": "independent"
}

lerna 安裝

npm install lerna -g
lerna -v

lerna 初始化

代碼規範採用lerna提供的規範結構的話:

# 默認固定模式
lerna init 
# 要採用獨立模式的話
lerna init -i
# lerna init --independent

生成的代碼結構

└── lerna/
   ├── packages/
   ├── lerna.json
   └── package.json

如果代碼已經存在,則只需要在項目下創建lerna.json並補充相關字段

{
    "useWorkspaces": true, // 使用 workspaces 配置。此項為 true 的話,將使用 package.json 的 "workspaces",下面的 "packages" 字段將不生效
    "version": "0.1.0", // 所有包版本號,獨立模式-"independent"
    "npmClient": "cnpm", // npm client,可設置為 cnpm、yarn 等
    "packages": [ // 包所在目錄,可指定多個
        "packages/*"
    ],
    "command": { // lerna 命令相關配置
        "publish": { // 發佈相關
            "ignoreChanges": [ // 指定文件或目錄的變更,不觸發 publish
                ".gitignore",
                "*.log",
                "*.md"
            ]
        },
        "bootstrap": { // bootstrap 相關
            "ignore": "npm-*",  // 不受 bootstrap 影響的包
            "npmClientArgs": [ // bootstr 執行參數
                "--no-package-lock"
            ]
        }
    }
}

lerna 相關命令

lerna官方文檔//lerna.js.org/

初始化

創建一個新的lerna倉庫或者將現有的倉庫使用lerna管理

lerna init # -i/--independent

Publish

發佈包

lerna publish

Bootstrap

把所有包安裝到根node_modules

lerna bootstrap

Run

運行每個包中的script命令

lerna run <script> --[...args]

Exe

單獨運行某個包下的script命令

lerna exec -- <command> [...args]
# example
$ lerna exec -- rm -rf ./node_modules
$ lerna exec -- protractor conf.js

Add

安裝本地或者遠程的包

lerna add <package>[@version] [--dev] [--exact] [--peer]
#--dev 將新包添加到devDependencies而不是dependencies.
#--exact 添加具有確切版本(例如1.0.1)而不是默認^semver 範圍(例如^1.0.1)的新包。
#--peer 將新包添加到peerDependencies而不是dependencies.

#將 module-1 包添加到 'prefix-' 前綴文件夾中的包中
lerna add module-1 packages/prefix-*

#將模塊 1 安裝到模塊 2
lerna add module-1 --scope=module-2

#在 devDependencies 中將 module-1 安裝到 module-2
lerna add module-1 --scope=module-2 --dev

#在 peerDependencies 中安裝 module-1 到 module-2
lerna add module-1 --scope=module-2 --peer

#在除module-1之外的所有模塊中安裝module-1
lerna add module-1

#在所有模塊中安裝 babel-core 
lerna add babel-core

原文地址: //kspf.xyz/archives/136