1.基于lerna搭建脚手架框架

基于lerna搭建脚手架框架

learn项目步骤

一、脚手架项目初始化

主要包含:

​ 初始化npm项目

​ 安装lerna

lerna init初始化项目

  1. 创建文件夹yh-imooc-clic-dev,并npm init -y初始化

  2. 安装lerna,这是一个开发依赖

    npm i -D lerna
    
  3. (可选)建议全局也装一个lerna

    npm i -g lerna
    
  4. lerna初始化

    lerna init
    

    package.json变为:

    {
      "packages": [
        "packages/*"    //所有的子包都会放置在这个packages下
      ],
      "version": "1.0.0"
    }
    
    • packages目录:所有的子包都会放置在这个packages下
    • version目录:版本号初始为0.0.0,应该修改为1.0.0

    得到的目录结构为:

    -node_modules/
    -packages/            #所有的子包都会放置在这个packages下
    -lerna.json
    -package.json
    
二、创建package

主要包含:

lerna create创建Package

lerna add安装依赖

lerna link链接依赖

  1. 创建两个package

    创建两个package:core和utils,其中core主要包含脚手架的bin文件,utils主要是工具类项目

    • lerna create

      创建lerna管理的包

      • 使用方法:
      lerna create <name> [loc]
      
      Positionals:
      	name pacakge的名称 必选 
      	loc package的安装路径 可选
      
      • 项目中:

        lerna create core #会自动在package目录下创建core子包
        # 这时候会让你填写package name
        package name: (core) @yh-imooc-cli-dev/core  # 输入package name为 @yh-imooc-cli-dev/core
        version: (1.0.0)
        description: yh-imooc-cli-dev core
        keywords:
        homepage:
        license: (ISC)
        entry point: (lib/core.js)
        # 这样就为package/core子包创建了package.json
        
        
        # 同理,再创建一个package/utils,这里过程同上,不再赘述
        lerna create utils
        
  2. 安装依赖

    • lerna add

      对指定的package安装依赖

      • 使用方法:

        lerna add <package>[@version] [--dev] [--exact] [--peer]
        
        # 特别注意
        lerna add 包A # 这样会在所有的package中安装包A
        lerna add 包A 路径A # 这样会在路径A(相对绝对都可)包中安装包A
        
      • 注意:lerna add安装某个包,需要package.json中没有写这个包,如果写了,则会出警告说无需安装

    • lernae clean 删除依赖

      清空所有包的所有node_modules,也就是删除掉所有包的node_modules文件夹,package.json中的依赖不会删除

      npm uninstall

      • 使用lerna add 的时候,会经常出无法安装的警告:lerna WARN No packages found where @imooc-cli/utils can be added.,就是因为package.json中没有删除依赖
    • lerna bootstrap 安装依赖

      根据package.json安装依赖,并创建软链接。

      • 注意:这里创建的软链接,是链接到你安装的远程依赖中的,不是本地的(我们本地调试的时候,部分包是需要本地的,所以部分包不能这样安装)
    • lerna link 软链接依赖

      帮助我们本地的包进行相互依赖

      • 首先在包A的package.json中添加要link的包和版本

        "dependencies": {
            "@yh-imooc-cli-dev/utils": "^1.0.0"
        }
        
      • 进入包A目录,执行lerna link

        这样就把包A的package.json中的依赖都link到本地的开发包了

        可以进入node_module/包A,执行ls -al查看软链接指向到了本地的开发包

三、脚手架开发和测试

主要包含:

lerna exec 执行shell脚本

lerna run 执行npm命令

lerna clean 清空(上面已经说明)

lerna bootstrap 安装依赖(上面已经说明)

  1. lerna exec

    所有的或指定的 package 下执行命令

    • 使用方法

      lerna exec [--scope <package包名(package.json中的name)>] -- <command> [..args]
      
      # 使用举例
      lerna exec -- rm -rf node_modules # 删除所有package下的node_modules
      lerna exec --scope @yh-imooc-cli-dev/core -- rm -rf node_modules # 碰到scope,说明定位到@yh-imooc-cli-dev/cor包下(注意:--scope后面写的是包名),然后删除当前子包下的node_modules
      
  2. lerna run

    执行npm命令

    npm替换成lerna使用

    • 使用方法

      lerna run <scrip> -- [..args]
      
      # 使用举例
      lerna run test
      lerna run build
      lerna run build --npm-client=yarn
      lerna run build --npm-client=npm  # 默认npm客户端是npm,也可以像上面那样换成yarn
      lerna run --parallel watch
      
    • 注意事项:

      • 在根目录执行,则是执行所有packages下的所有包的script中的对应命令
      • 在某个package下执行,则是执行当前包的script中的对应命令
四、脚手架发布上线流程

主要包含:

lerna version:用于bump version,也就是增加版本号

lerna changed

lerna diff

lerna publish

  1. lerna version

    用来升级版本号

    • 注意事项:
      • 要先commit,然后才能是要用该命令
  2. lerna changed

    自上个版本以来,有哪些package做了变更

  3. lerna diff

    用来查看当前本地文件与上一次commit之间的diff

  4. lerna publish

    发布版本

    • 注意事项:

      • 在调用这个命令的时候,会自动git add所有package下的package-lock.jsonpackage.json,所以在.gitignore中不要添加这两个文件,不然会报错

      • 发布时,如果为私有包,则需要登录,执行npm login

      • 发布时,默认为私有包,如果设为共有(共有不需要登录),则应在package.json中添加:

        "publishConfig": {
        	"access": "public"
        }
        
      • 发布时,需要有一个LICENSE.md

      • 先提交,再publish

      • lerna每一次publish,会给仓库创建一个tag,无论publish是否成功

last、细节易忘知识
  1. lerna create <name> [loc]<>表示必选,[]标识可选
  2. lerna create core时,自动会在package目录下创建core文件夹(包)
  3. lerna create core时,会让你确认package name,你输入@yh-imooc-cli-dev/core这种两级的名称:
    1. 第一级@yh-imooc-cli-dev:表示organization组织的名称(npm上可以创建组织,创建组织为了防止包重复,所以这个组织应该在npm提前创建好)
    2. 第二级core表示该库的名称
  4. lerna create core时,会让你确认entry point,也就是入口文件。如果当前库是lib类的或SDK,则需要指定入口文件,其他可以不指定,比如core脚手架类型的,其实就可以不指定,而utilslib类的,则需要指定。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值