创建脚手架
在前端开发中最开始使用的工具便是脚手架了,但是脚手架的实现却较为“复杂”,本文开始梳理脚手架的创建过程。
脚手架本地调试的流程
脚手架的调试离不开指令:npm link
,这个指令有多种用途。
npm link your-lib
是将当前项目中的node_modules
下指定的库文件链接到 node 全局node_modules
下的库文件;
npm link
是讲当前项目链接到 node 全局node_modules
中作为一个库文件,并解析 bin 配置创建可执行文件;
npm unlink
是将当前项目从 node 全局node_modules
中移除;
npm unlink your-lib
是将当前项目中的库文件依赖移除。
链接本地脚手架:
$: cd your-cli-dir $: npm link
链接本地库文件
# 切换到需要被链接的本地库 $: cd your-lib-dir $: npm link # 切换回本地库, link 链接刚刚软连接的库 $: cd your-cli-dir $: npm link your-lib
取消链接本地库
# 切换到需要被链接的本地库 $: cd your-lib-dir $: npm unlink # 切换回本地库 $: cd your-cli-dir $: npm unlink your-lib
脚手架参数解析
可以利用 node 的 process 对象来获取参数。process 是一个全局对象,它提供了与当前 Node.js 进程相关的信息和控制能力。而 argv 是 process 对象的一个属性,它是一个包含命令行参数的数组。
如执行 node script.js arg1 arg2 arg3
则 process.argv
的值将是:
const argv = require('process').argv // 返回一个包含命令行参数的数组
console.log(argv) // ['/path/to/node', '/path/to/script.js', 'arg1', 'arg2', 'arg3']
脚手架框架 lerna
lerna (发音为"lur-na")是一个用于管理 JavaScript 项目中的多包存储库的工具。它的目标是使得在具有多个相关包(packages)的大型项目中更容易进行协同开发和版本管理。
Lerna 的主要功能包括:
版本管理: Lerna 可以在项目中的多个包之间同步版本号。当决定升级项目的主版本或次版本时,Lerna 会自动更新所有相关的包的版本。
依赖关系管理: Lerna 允许在项目的不同包之间共享依赖关系。这有助于确保所有包都使用相同版本的依赖项,从而减少潜在的兼容性问题。
协同开发: Lerna 提供了一组命令,使得在多个包之间进行协同开发更加容易。可以使用 Lerna 来运行测试、构建、发布等操作,而不必手动切换到每个包的目录。
自动化发布: Lerna 支持将所有包一起发布,以确保它们都使用相同的版本号。这有助于简化发布流程并减少版本管理的繁琐性。
常用指令
lerna create <packageName>
: 创建 Packagelerna add <packageName>
: 安装依赖。【V7 版本已废弃】- 最新版本是用
npm install <dependency> -w <package>
- 最新版本是用
lerna link
: 链接依赖lerna exec
: 执行 shell 脚本lerna run
: 执行 npm 命令lerna clean
: 清空依赖lerna bootstrap
: 重装依赖lerna changed
: 查看上线版本依赖的所有变更lerna diff
: 查看 difflerna publish
: 项目发布
使用步骤
- 建议全局安装:
npm install -g lerna
- 初始化项目(packages 下所有包共用一个版本号):
lerna init --independent
- 新建模块,如:
lerna create @huy-cli/core
- 提交代码到 git 仓库:
git add .
+git commit -m 'init lerna'
- 登录 npm:
npm login
, 复制登录地址到浏览器登录账号 - 发布包到 npm:
lerna publish
, 选择发布版本, 发布到线上