国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

lerna管理package

PumpkinDylan / 3048人閱讀

摘要:最近發現公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了目錄里,還有這種騷操作特意查了下資料,發現是一種比較流行的項目管理模式。

最近發現公司一個項目的目錄組織挺奇怪的,所有的子項目都放在了packages目錄里,還有這種騷操作?特意查了下資料,發現是一種比較流行的monorepo項目管理模式。近幾年比較火的React,Vue,Babel都是用的這種模式:

我們平常一般采用的都是multiple repositories的項目管理模式:把一個大項目拆分成若干個小項目,每個小項目都獨立的放在gitlab上。這種模式其實也沒啥不好,但是某些情況下,子項目A依賴子項目B,如果子項目B經常改動,那么每次B改動了,都要修改A,這時就非常麻煩。在開發一個前端框架或者UI庫時,就經常會遇到上述情況,這時我們就可以考慮下monorepo

monorepo說到底也只是一個理念,那么怎么才能實現這種代碼組織呢?

lerna

yarn中的Workspace

本文主要介紹下lerna的使用

源碼參考

lerna

全局安裝lerna

npm i lerna -g

lerna是基于git的,在github上新建一個項目learn-lerna

git clone git@github.com:deepred5/learn-lerna.git
cd learn-lerna

初始化項目:

lerna init

lerna會自動創建一個packages目錄夾,我們以后的項目都新建在這里面。同時還會在根目錄新建一個lerna.json配置文件

{
  "packages": [
    "packages/*"
  ],
  "version": "0.0.0" // 共用的版本,由lerna管理
}
創建package

我們創建兩個package:

cd packages
mkdir prpr-lerna-core
cd prpr-lerna-core
npm init -y
cd packages
mkdir prpr-lerna-popular
cd prpr-lerna-popular
npm init -y

注意:這兩個package我們最后都是要發布到npm上的,所以名字請取特殊些,不能被人用過

添加依賴

prpr-lerna-popular依賴prpr-lerna-core,這時有兩種方法添加依賴:

第一種方法是修改prpr-lerna-popular/package.json,添加

{
  "dependencies": {
    "prpr-lerna-core": "^1.0.0"
  }
}

然后運行lerna bootstrap

第二種方法是直接使用命令add

lerna add prpr-lerna-core --scope=prpr-lerna-popular

運行之后,我們發現prpr-lerna-popular生成了node_modules,而node_modules里生成了指向prpr-lerna-core軟鏈,類似npm link的效果:

新建prpr-lerna-core/index.js

const API = "https://yande.re/post/popular_recent.json";

module.exports = {
  API
}

prpr-lerna-popular除了依賴prpr-lerna-core,還可以依賴其他開源的庫,比如我們使用axios

lerna add axios --scope=prpr-lerna-popular

新建prpr-lerna-popular/index.js

const { API } = require("prpr-lerna-core");
const axios = require("axios");

const getPopularImg = () => axios.get(API)

module.exports = getPopularImg;

// 測試代碼,發布時刪除
getPopularImg().then((res) => console.log(res.data.length));

測試一下:
node packages/prpr-lerna-popular/index.js
正常情況下可以輸出結果

發布到npm

首先把所有的代碼提交

cd learn-lerna
git add .
git commit -m "test publish"

注冊一個npmjs賬戶

npm login

登入你的賬戶,如果本地npm是淘寶鏡像,一定要換回https://registry.npmjs.org/地址!!!

lerna publish

運行publish,選擇發布的版本號

lerna可以幫我們管理版本號,非常方便!

常用命令
lerna init #初始化
lerna bootstrap #下載依賴包或者生成本地軟連接
lerna add axios #所有包都添加axios
lerna add prpr-lerna-core --scope=prpr-lerna-popular #給包prpr-lerna-popularx添加prpr-lerna-core依賴
lerna list
lerna clean
其他事項

lerna默認使用的是集中版本,所有的package共用一個version。如果希望不同的package擁有自己的版本,可以使用Independent模式

發布package的名字如果是以@開頭的,例如@deepred/core,npm默認以為是私人發布,需要使用npm publish --access public發布。但是lerna publish不支持該參數,解決方法參考: issues

參考

淺談monorepo

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105444.html

相關文章

  • 像babel那樣使用lerna管理你的項目

    摘要:如何像那樣進行多包管理呢項目的里面存放了旗下的所有包,比如。如果你不想這么麻煩,那么有一個辦法就是,不用,也就是你的包名不加前綴,這樣你的包就默認是公共的包了,完全可以不用先去提交一次公共版本,才能使用來管理你的包,簡單多了。 溫馨提示:請直接看最后面的正確操作,如果不懂,再回顧全文。 如何像 babel 那樣進行多包管理呢? babel 項目的 packages 里面存放了 babe...

    Michael_Ding 評論0 收藏0
  • Monorepo——大型前端項目的代碼管理方式

    摘要:目前最常見的解決方案是和的特性。具體的使用方法移步官網而使用作為包管理器的同學,可以在中以字段聲明,就會以的方式管理。這樣的話,無論你的包管理器是還是,都能發揮的優勢要是包管理是,就會把依賴安裝交給處理。 最近我接手了一個項目,代碼量比較大、有點復雜。倉庫 clone 下來代碼有 50+ MB,npm install 安裝完體積飚到了近 2GB …… 熟悉了一下,這個項目比較復雜,采用...

    ziwenxie 評論0 收藏0
  • 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫

    摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關于項目工程化前端架構前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。使用導出模塊,就可以在使用這個庫的項目中構建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關于項目工程化、前端架構、前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規范來寫代碼 js 模塊化的發展大致有...

    rollback 評論0 收藏0
  • 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫

    摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關于項目工程化前端架構前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。使用導出模塊,就可以在使用這個庫的項目中構建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關于項目工程化、前端架構、前端構建等方面的技術,這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規范來寫代碼 js 模塊化的發展大致有...

    xiaolinbang 評論0 收藏0
  • 說明Yarn與Lerna管理monorepo使用

       我們先說下 Yarn workspace  首先Yarn workspace 是 Yarn 提供的 monorepo 下,管理依賴的機制。這就說主要對代碼倉庫下,多個 package 的依賴,進行管理:將共同的依賴,做 hosting(提升)。前述這樣就可以有效的防止 package 中的包重復安裝。 workspace 機制,會在根目錄下,統一安裝依賴到 node_module,并生成...

    3403771864 評論0 收藏0

發表評論

0條評論

PumpkinDylan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<