@qcqx/nlm
v2.7.0
Published
npm local modules - 本地 npm 包联调工具
Maintainers
Readme
nlm - npm local modules
本地 npm 包联调工具,足够简单易用,不修改 package.json,不影响 git 流程。仅增加一个 .nlm 目录,且自动加入 .gitignore。
Why
在开发多个npm包时,除了在包内维护demo及测试用例外,往往还需要在项目中安装最新的包产物进行联调,以实际查看效果。
npm-link 在有限程度上解决了这个问题,但使用上仍然存在一些约束与问题。
What
nlm在本地模拟发包,将包产物发布到全局 store,具有符合 npm 版本规范的管理方式,在安装时派发产物副本到项目的.nlm目录,并在node_modules中建立软链接。nlm帮你处理了许多繁琐的工作,只需要push你的包,然后install或update即可。- 支持 i18n,默认自动识别语言环境,或使用
--lang选项手动指定。 - 本质来说,
nlm仅仅只是修改了node_modules中某个包的指向,其它一切都不会和包管理器有任何冲突。
Installation
npm i @qcqx/nlm -g快速开始
# 交互式向导,选择命令与参数并执行
nlm w
# 或者直接执行命令,查看帮助列出所有命令
nlm helpUsage
push
推送包到全局 store,并更新所有使用此包的项目。
npm run build # push命令不会自动触发build,在push前先执行你的build命令
nlm push [options]
nlm p
Options:
-b, --build [scriptName] 推送前执行指定脚本,未指定则交互式选择
-v, --version <version> 指定推送版本(覆盖 package.json),如 latest 或 1.0.0
-f, --force 强制推送,跳过 hash 检查
--packlist 强制使用 npm-packlist 获取文件列表,默认使用 tinyglobby 快速方案,特殊情况自动降级install
安装包到当前项目
如果没有指定包名,则列出所有可安装的包,并交互式选择安装。
nlm install [package] [options]
nlm i
Options:
-f, --force 强制安装,跳过 hash 检查同 npm 一样,已经安装过的包,包名未指定版本时,将按 lockfile 中的 lock 版本规则更新。
update
更新包到当前项目
如果没有指定包名,则更新所有已安装的 nlm 包
nlm update [package] [options]
nlm up
Options:
-f, --force 强制更新,跳过 hash 检查list
列出项目或全局 store 中的所有包
nlm list [options]
nlm ls
Options:
-g, --global 列出全局 store 中的所有包uninstall
在当前项目中卸载
如果没有指定包名,则列出所有已安装的包,并交互式选择卸载。
nlm uninstall [package]
nlm unconfig
交互式配置 nlm,自动生成项目或全局配置
nlm config [options]
nlm c
Options:
-g, --global 配置全局设置 (默认是项目级配置)- 项目级配置文件
<project>/.nlm/nlm.config.json - 全局配置文件
~/.nlm/nlm.config.json
{
"packageManager": "npm", // 指定使用的包管理器,用于需要时安装部分依赖,默认 npm
"lang": "auto" // 语言设置,auto 表示自动识别,zh 中文,en 英文,默认 auto
}search
搜索全局 store 中的包
nlm search <keyword>
nlm swizard
交互式向导,选择命令与参数并执行
nlm wizard
nlm whelp
查看命令帮助
nlm help <command>Common Options
--debug 开启调试模式,输出详细日志
--lang 设置语言 (zh/en),默认自动推断构建后自动推送
如果你需要持续构建并自动推送包,且原构建工具不支持指定构建后自动执行命令,可以结合 concurrently 和 chokidar-cli 实现。
# npm run build:watch 是你的持续构建命令
concurrently "npm run build:watch" "chokidar 'lib/**/*' -d 1000 -c 'echo 构建完成 && nlm push'"
# 监听 lib 目录下的所有文件,当文件变化时自动推送,1000ms 防抖Compatibility
兼容 node >= 14.18
