lerna 经常使用命令

lerna 介绍

lerna 处理机构

固定模式(fixed)

全部包是统一的版本号,每次升级,全部包版本统一更新,无论这个包内容改变与否

具体体如今,lerna 的配置文件 lerna.json 中永远会存在一个肯定版本号:vue

{
"version": "0.0.1"
}

典型例子: babelvuenode

独立模式(independent)

每一个包是单独的版本号,每次lerna 触发发布命令,每一个包的版本都会单独变化

具体体如今,lerna 的配置文件 lerna.json 中没有一个肯定版本号,而是:git

{
"version": "independent"
}

lerna 安装

npm install lerna -g
lerna -v

lerna 初始化

代码规范采用lerna提供的规范结构的话:shell

# 默认固定模式
lerna init 
# 要采用独立模式的话
lerna init -i
# lerna init --independent

生成的代码结构

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

若是代码已经存在,则只须要在项目下建立lerna.json并补充相关字段npm

{
    "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官方文档https://lerna.js.org/json

初始化

建立一个新的 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
原文地址: https://kspf.xyz/archives/136
相关文章
相关标签/搜索