乐趣区

关于javascript: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 官网文档 https://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

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

退出移动版