中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

今日軍事新聞聯(lián)播在線播放長沙百度快照優(yōu)化排名

今日軍事新聞聯(lián)播在線播放,長沙百度快照優(yōu)化排名,深圳住房和建設(shè)局新網(wǎng)站,cms系統(tǒng)主要功能Monorepo架構(gòu)可以把多個獨立的系統(tǒng)放到一起聯(lián)調(diào),本文記錄基于pnpm > workspace功能,如何構(gòu)建將vitepress和組件庫進行聯(lián)調(diào),并且使用turbo進行任務(wù)順序編排。 技術(shù)棧清單: pnpm 、vitepress 、turbo 一、需求分析 1、最終目標…

Monorepo架構(gòu)可以把多個獨立的系統(tǒng)放到一起聯(lián)調(diào),本文記錄基于pnpm > workspace功能,如何構(gòu)建將vitepress和組件庫進行聯(lián)調(diào),并且使用turbo進行任務(wù)順序編排。

技術(shù)棧清單: pnpmvitepress 、turbo

一、需求分析

1、最終目標

我們最終需要實現(xiàn)這樣的一個Monorepo項目架構(gòu):

--project--package.json--packages--docs--package.json--project-one--package.json--pnpm-workspace.yaml

其中各個目錄功能如下:

project:根目錄

packages:子項目包

packages/docs:基于vitepress的文檔項目

packages/project-one:組件庫

2、Monorepo技術(shù)選型

實現(xiàn)Monorepo架構(gòu)的方式主要有以下兩種:

  • lerna+yarn

  • pnpm中workspace配置

這里選擇后者,因為基于pnpm的包管理邏輯使用軟硬鏈接,并且重復(fù)使用本地依賴包緩存,可以大大提升安裝效率,節(jié)省依賴包存儲空間。而且pnpm還繼承了npm的所有功能,并且支持node版本管理,這里非常推薦pnpm。

3、為什么使用vitepress?

之前有使用過vuepress,后來vite伴隨vue3一起被推出,體驗后果斷切換到vite,基于esmodule的調(diào)試模式,調(diào)試效率直線提升。所以同理,這里也同樣推薦使用vitepress,而不是vuepress。

4、turbo的作用

turbo全名turborepo,本身也是一個Monorepo管理工具。這里主要使用其任務(wù)編排能力,能夠按正確的順序執(zhí)行Monorepo內(nèi)的項目的任務(wù)。
例如:Monorepo里有三個項目A,B,C。A和C還需要依賴于B。也就是說B項目需要先構(gòu)建好后,A和C才能構(gòu)建。

正常每個項目都按照這個順序做任務(wù)編排:lint->build->test->deploy。即檢查規(guī)范->構(gòu)建項目->測試項目->部署項目。

img

從上圖可以看到,使用lerna時,A、B、Cd這三個項目中的lint、build、deploy都是并行進行的。如果A、C都依賴B,那么A、C在build的時候,很可能 B d還沒有build完成,會拖慢A、C的build效率。

但是turbo能夠?qū)⒚總€項目里的任務(wù)進行拓撲排序再執(zhí)行。即圖中B項目并行執(zhí)行l(wèi)int,test,build,之后A和C就可以更快的執(zhí)行構(gòu)建,大大提高了整體的效率。

二、開發(fā)

1、文件結(jié)構(gòu)

首先創(chuàng)建如下文件結(jié)構(gòu):

--project--package.json--packages--docs--package.json--project-one--package.json--pnpm-workspace.yaml--turbo.json

創(chuàng)建完project根目錄、packages/docs、packages/project-one后,分別執(zhí)行pnpm init做項目初始化,生成package.json文件。

并且在跟目錄創(chuàng)建 pnpm-workspace.yaml 文件:

packages:- 'apps/*'- 'packages/*'

識別packagesapps目錄下的項目,作為子項目。這樣在執(zhí)行pnpm add XXX --workspace時,就會到子項目中去尋找。

2、turbo.json

{"$schema": "https://turbo.build/schema.json","pipeline": {"build": {"dependsOn": ["^build"],"outputs": ["dist/**"]},"lint": {},"dev": {"cache": false,"persistent": true},"clean": {"cache": false}}
}

3、根目錄script命令行代理

#package.json
"scripts": {"turbo-test": "turbo run test","turbo-build": "turbo run build","test": "echo \"Error: no test specified\" && exit 1","docs:dev": "pnpm --filter \"docs\" dev","docs:build": "pnpm --filter \"docs\" build","docs:serve": "pnpm --filter \"docs\" serve","docs:preview": "pnpm --filter \"docs\" preview","one:dev": "pnpm --filter \"project-one\" dev"
}#docs package.json
"scripts": {"dev": "vitepress dev","build": "vitepress build","serve": "vitepress serve","preview": "vitepress preview","test": "echo \"Error: no test specified\""
}#project-one package.json
"scripts": {"dev": "node index2.js","build": "node index2.js","test": "echo \"Error: no test specified\""
}

4、初始化project-one項目

代碼如下:

#index.js
const addOne = (x = 0, msg = '未填') => {console.log('調(diào)用project-one的項目是:', msg);return x + 1;
}
export default addOne#index2.js
console.log('nihao index2');

5、初始化docs項目

docs使用vitepress構(gòu)建,打開終端,進入docs目錄,執(zhí)行下面命令,對docs初始化:

# 安裝vitepress
pnpm add -D vitepress # 初始化項目,這里會出現(xiàn)交互式命令行,默認回車下一步就行
pnpm dlx vitepress init

調(diào)整docs/package.json代碼如下:

{"name": "docs","version": "1.0.0","description": "","main": "index.js","scripts": {"dev": "vitepress dev","build": "vitepress build","serve": "vitepress serve","preview": "vitepress preview","test": "echo \"Error: no test specified\""},"keywords": [],"author": "","license": "ISC","dependencies": {"project-one": "workspace:^","vitepress": "1.0.0-rc.20","vue": "^3.2.45"},"devDependencies": {}
}

創(chuàng)建docs/index.md文件,代碼如下:

---
layout: home
hero:name: VitePresstext: Vite & Vue powered static site generator.tagline: Lorem ipsum...actions:- theme: brandtext: Get Startedlink: https://github.com/jkkdeng- theme: alttext: View on GitHublink: https://github.com/jkkdengfeatures:- icon: 🛠?title: Simple and minimal, alwaysdetails: Lorem ipsum...- icon: 🛠?title: Simple and minimal, alwaysdetails: Lorem ipsum...- icon: 🛠?title: Simple and minimal, alwaysdetails: Lorem ipsum...
---
<script setup>
import addOne from 'project-one'
addOne(10,'docs')
</script>

import addOne from 'project-one',這行會在workspace中尋找project-one項目下的package.json文件,識別"main": "index.js",配置,然后獲取到exportaddOne方法。最終打印到瀏覽器控制臺。

6、執(zhí)行

到這里就基本都配置完成了,這里我們把項目跑起來,看下運行效果。

我們打開終端命令行,并進入project根目錄.

  1. 執(zhí)行pnpm run turbo-build

    #turbo.json 
    "build": {"dependsOn": ["^build"]
    },
    

    系統(tǒng)會找到turbo.jsonpipeline>build下的配置:"dependsOn": ["^build"]^build含義是指上游的build任務(wù)優(yōu)先執(zhí)行。猜測turbo應(yīng)該對各個子包中的package.json進行掃描,查看是否存在依賴關(guān)系,例如我們這里是docs項目依賴project-one項目,所有優(yōu)先對proect-one項目進行build,然后在對docs進行build??聪旅娴倪\行結(jié)果也的確如此。
    image-20231009164000877

  2. 執(zhí)行pnpm run turbo-test

    #turbo.json 
    "test": {"dependsOn": ["build"]
    },
    

    這里的build就是pipeline中的build任務(wù),含義是:每個項目要執(zhí)行自己的test任務(wù),就要先執(zhí)行build任務(wù)。

    可以看到執(zhí)行順序依次是:

    • project-one -> build
    • project-one -> test
    • docs -> build
    • docs -> test image-20231009165111296
  3. 執(zhí)行pnpm run one:dev
    image-20231009165422131

  4. 執(zhí)行pnpm run docs:dev
    image-20231009165515955

image-20231009165640512

源碼

http://www.risenshineclean.com/news/30032.html

相關(guān)文章:

  • 優(yōu)質(zhì)網(wǎng)站建設(shè)報價長沙seo網(wǎng)站優(yōu)化
  • 國外扁平化網(wǎng)站企業(yè)培訓(xùn)計劃方案
  • 建設(shè)類似衣聯(lián)網(wǎng)的網(wǎng)站整合營銷名詞解釋
  • php做的網(wǎng)站怎么上傳網(wǎng)站推廣優(yōu)化
  • h5網(wǎng)站制作費用關(guān)鍵字c語言
  • 模擬網(wǎng)站建設(shè)平臺推廣是做什么的
  • 可以自己做效果圖的網(wǎng)站小程序自助搭建平臺
  • 學生做網(wǎng)站期末作業(yè)新產(chǎn)品推廣方案怎么寫
  • 做空氣開關(guān)那個網(wǎng)站推廣比較好百度廣告聯(lián)盟app
  • 天津企業(yè)網(wǎng)站模板建站哪家好搜索自媒體平臺
  • 網(wǎng)站建設(shè)后的效果評估sem是什么意思啊
  • wordpress插件 地圖北京做網(wǎng)絡(luò)優(yōu)化的公司
  • 做網(wǎng)站推廣多少錢百度銷售系統(tǒng)
  • 柳州市黨風廉政建設(shè)網(wǎng)站專注網(wǎng)站建設(shè)服務(wù)機構(gòu)
  • 青海報社網(wǎng)站建設(shè)公司百度在線問答
  • 做的網(wǎng)站怎么放視頻如何做網(wǎng)站的教程
  • 網(wǎng)站建設(shè)一點通口碑營銷是什么
  • 企業(yè)移動網(wǎng)站建設(shè)商百度賬號登陸
  • 小程序設(shè)計開發(fā)國內(nèi)seo公司排名
  • 免費做電腦網(wǎng)站網(wǎng)站視頻
  • 零基礎(chǔ)怎么開網(wǎng)店seo短視頻網(wǎng)頁入口引流下載
  • wordpress多賬號權(quán)限天津seo優(yōu)化
  • 網(wǎng)站建設(shè)用哪種語言最好深圳網(wǎng)絡(luò)營銷怎么推廣
  • 什么叫網(wǎng)站建設(shè)手機怎么建網(wǎng)站
  • 網(wǎng)站架設(shè)客服QQ百度熱搜 百度指數(shù)
  • 教育企業(yè)重慶網(wǎng)站建設(shè)動態(tài)網(wǎng)站設(shè)計畢業(yè)論文
  • 鄂爾多斯網(wǎng)站建設(shè)百度提交網(wǎng)站入口
  • 城鄉(xiāng)建設(shè)網(wǎng)站報建需要什么網(wǎng)絡(luò)產(chǎn)品及其推廣方法
  • 搭建網(wǎng)站找什么公司銷售網(wǎng)站排名
  • 網(wǎng)站建設(shè) 關(guān)于我們百度 seo 工具