创建脚手架

Huy大约 3 分钟javascriptjavascript

在前端开发中最开始使用的工具便是脚手架了,但是脚手架的实现却较为“复杂”,本文开始梳理脚手架的创建过程。

脚手架本地调试的流程

脚手架的调试离不开指令: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 是将当前项目中的库文件依赖移除。

  1. 链接本地脚手架:

    $: cd your-cli-dir
    $: npm link
    
  2. 链接本地库文件

    # 切换到需要被链接的本地库
    $: cd your-lib-dir
    $: npm link
    
    # 切换回本地库, link 链接刚刚软连接的库
    $: cd your-cli-dir
    $: npm link your-lib
    
  3. 取消链接本地库

    # 切换到需要被链接的本地库
    $: 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 arg3process.argv 的值将是:

const argv = require('process').argv // 返回一个包含命令行参数的数组

console.log(argv) // ['/path/to/node', '/path/to/script.js', 'arg1', 'arg2', 'arg3']

脚手架框架 lerna

lernaopen in new window (发音为"lur-na")是一个用于管理 JavaScript 项目中的多包存储库的工具。它的目标是使得在具有多个相关包(packages)的大型项目中更容易进行协同开发和版本管理。

Lerna 的主要功能包括:

  1. 版本管理: Lerna 可以在项目中的多个包之间同步版本号。当决定升级项目的主版本或次版本时,Lerna 会自动更新所有相关的包的版本。

  2. 依赖关系管理: Lerna 允许在项目的不同包之间共享依赖关系。这有助于确保所有包都使用相同版本的依赖项,从而减少潜在的兼容性问题。

  3. 协同开发: Lerna 提供了一组命令,使得在多个包之间进行协同开发更加容易。可以使用 Lerna 来运行测试、构建、发布等操作,而不必手动切换到每个包的目录。

  4. 自动化发布: Lerna 支持将所有包一起发布,以确保它们都使用相同的版本号。这有助于简化发布流程并减少版本管理的繁琐性。

常用指令

  • lerna create <packageName> : 创建 Package
  • lerna add <packageName>: 安装依赖。【V7 版本已废弃】open in new window
    • 最新版本是用 npm install <dependency> -w <package>
  • lerna link: 链接依赖
  • lerna exec: 执行 shell 脚本
  • lerna run: 执行 npm 命令
  • lerna clean : 清空依赖
  • lerna bootstrap: 重装依赖
  • lerna changed: 查看上线版本依赖的所有变更
  • lerna diff: 查看 diff
  • lerna publish: 项目发布

使用步骤

  1. 建议全局安装: npm install -g lerna
  2. 初始化项目(packages 下所有包共用一个版本号): lerna init --independent
  3. 新建模块,如: lerna create @huy-cli/core
  4. 提交代码到 git 仓库: git add . + git commit -m 'init lerna'
  5. 登录 npm: npm login, 复制登录地址到浏览器登录账号
  6. 发布包到 npm: lerna publish, 选择发布版本, 发布到线上
Loading...