最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 「笔记」基于 lerna 的多包 JavaScript 项目搭建维护

    正文概述 掘金(洛竹)   2021-06-04   567

    全局安装 lerna

    $ npm install lerna -g
    

    新建一个 git 仓库

    $ git init lerna-repo && cd lerna-repo
    

    初始化 lerna 项目

    $ lerna init --independent
    

    你的代码仓库目前应该是如下结构:

    lerna-repo/
      packages/
      package.json
      lerna.json
    

    创建 package

    $ lerna create module-1
    $ lerna create module-2
    

    yarn workspaces & Lerna Hoisting

    使用 yarn workspaces 结合 Lerna useWorkspaces 可以实现 Lerna Hoisting。这并不是多此一举,这可以让你在统一的地方(根目录)管理依赖,这即节省时间又节省空间。

    配置 lerna.json:

    {
      ...
      "npmClient": "yarn",
      "useWorkspaces": true
    }
    

    顶级 package.json 必须包含一个 workspaces 数组:

    {
      "private": true,
      ...
      "workspaces": ["packages/*"]
    }
    

    npm registry

    搭建 verdaccio

    全局安装:

    $ npm install verdaccio -g
    

    配置 ~/.config/verdaccio/config.yaml uplinks:

    ...
    # a list of other known repositories we can talk to
    uplinks:
      npmjs:
        url: https://registry.npmjs.org/
      taobao:
        url: https://registry.npm.taobao.org/
      tuya:
        url: https://registry-npm.tuya-inc.top/
    ...
    

    设置开机自启动

    0、run sudo npm i -g pm2

    1、run pm2 start verdaccio & pm2 startup

    outputs:

    [PM2] Init System found: launchd
    [PM2] To setup the Startup Script, copy/paste the following command:
    sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u luozhu --hp /Users/luozhu
    

    2、run sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup launchd -u luozhu --hp /Users/luozhu

    outputs:

    [PM2] Freeze a process list on reboot via:
    $ pm2 save
    
    [PM2] Remove init script via:
    $ pm2 unstartup launchd
    

    修改 lerna publishConfig

    // lerna.json
    {
      "command": {
        "publish": {
          "ignoreChanges": ["ignored-file", "*.md"],
          "message": "chore(release): publish %s",
          "registry": "http://localhost:4873"
        }
      }
    }
    
    // 各 package 的 package.json
    {
      "publishConfig": {
        "registry": "http://localhost:4873"
      }
    }
    

    commitlint & commitizen

    开发流程

    install

    $ yarn install
    # or
    $ lerna bootstrap
    

    package 依赖

    给指定 package 安装依赖:

    $ yarn workspace module-1 add lodash
    # or
    $ lerna add lodash --scope module-1
    

    给所有 package 安装依赖:

    $ yarn workspaces add dayjs
    # or
    $ lerna add dayjs
    

    workspace 依赖

    $ lerna add module-2 --scope module-1
    

    共用的工具依赖

    $ yarn add -W -D typescript
    

    lerna.json

    • version: 当前仓库的版本,Independent mode 请设置为 independent
    • npmClient: 指定运行命令的客户端程序(默认是 npm)
    • ignoreChanges: 一个不包含在 lerna changed/publish 的 glob 数组。使用这个去阻止发布不必要的更新,比如修复 README.md
    • command
      • publish
        • message: 一个 publish 时的自定义 commit 信息。详情请查看@lerna/version
        • registry: 设置自定义的 npm 代理(比如使用 verdaccio 搭建的私服)
      • version
        • conventionalCommits: lerna version 会自动决定 version bump 和生成 CHANGELOG 文件

    npm scripts

    {
      "scripts": {
        "release:beta": "lerna publish --canary --pre-dist-tag=beta --preid=beta --yes",
        "release:rc": "lerna publish prerelease --pre-dist-tag=rc --preid=rc",
        "release:next": "lerna publish prerelease --pre-dist-tag=next --preid=next",
        "release:preminor": "lerna publish preminor --pre-dist-tag=next --preid=next",
        "release:premajor": "lerna publish premajor --pre-dist-tag=next --preid=next",
        "release": "lerna publish",
        "release:minor": "lerna publish minor",
        "release:major": "lerna publish major",
        "commit": "git cz"
      }
    }
    

    起源地下载网 » 「笔记」基于 lerna 的多包 JavaScript 项目搭建维护

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元