前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >node包管理器之lerna常用命令

node包管理器之lerna常用命令

作者头像
开水泡饭
发布2022-12-26 16:46:47
6120
发布2022-12-26 16:46:47
举报

lerna 介绍

lerna 处理机构

固定模式(fixed)

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

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

代码语言:javascript
复制
{
"version": "0.0.1"
}

典型例子: babelvue

独立模式(independent)

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

具体体现在,lerna 的配置文件 lerna.json 中没有一个确定版本号,而是:

代码语言:javascript
复制
{
"version": "independent"
}

lerna 安装

代码语言:javascript
复制
npm install lerna -g
lerna -v

lerna 初始化

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

代码语言:javascript
复制
# 默认固定模式
lerna init 
# 要采用独立模式的话
lerna init -i
# lerna init --independent

生成的代码结构

代码语言:javascript
复制
└── lerna/
   ├── packages/
   ├── lerna.json
   └── package.json

如果代码已经存在,则只需要在项目下创建lerna.json并补充相关字段

代码语言:javascript
复制
{
    "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管理

代码语言:javascript
复制
lerna init # -i/--independent
Publish

发布包

代码语言:javascript
复制
lerna publish
Bootstrap

把所有包安装到根node_modules

代码语言:javascript
复制
lerna bootstrap
Run

运行每个包中的script命令

代码语言:javascript
复制
lerna run <script> --[...args]
Exe

单独运行某个包下的script命令

代码语言:javascript
复制
lerna exec -- <command> [...args]
# example
$ lerna exec -- rm -rf ./node_modules
$ lerna exec -- protractor conf.js
Add

安装本地或者远程的包

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lerna 介绍
    • lerna 处理机构
      • 固定模式(fixed)
      • 独立模式(independent)
    • lerna 安装
      • lerna 初始化
        • 生成的代码结构
          • lerna 相关命令
            • 初始化
            • Publish
            • Bootstrap
            • Run
            • Exe
            • Add
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档