lerna 常用命令

  • A+
所属分类:Web前端
摘要

所有包是统一的版本号,每次升级,所有包版本统一更新,不管这个包内容改变与否


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