精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

2021年管理Monorepo代碼庫的11種出色工具

開發 開發工具
如今,許多工具可以在20個不同的文件夾中運行“npm install”和“npm run build”。但是,并不是所有的工具都能促進正確的monorepo。

 [[360304]]

如今,許多工具可以在20個不同的文件夾中運行“npm install”和“npm run build”。但是,并不是所有的工具都能促進正確的monorepo。

促進一個正確的單體開發意味著要解決一些挑戰,比如為分離的模塊運行測試和構建過程,能夠從項目中獨立發布模塊,以及管理變更對項目中每個受影響的依賴模塊的部分影響。

挑戰的清單還在繼續,甚至包括“瑣碎”的事情,比如你如何管理issues和PRs,這可能會隨著你的開發規模而變得困難。

請注意,一個monorepo不是一個整體的應用程序(!) ——它不是一次性構建或部署的,它是一組單獨開發的應用程序。

什么是 monorepo?

國慶期間10月5日尤大公開了vue3.0已完成的源碼,也是采用了monorepo管理模式,看來monorepo確實有其獨到的優勢。

monorepo是一種將多個package放在一個repo中的代碼管理模式,摒棄了傳統的多個package多個repo的模式。

目前 Babel, React, Angular, Ember, Meteor, Jest等許多開源項目都使用該種模式來管理代碼。

解決的問題

  • 多個repo難以管理,編輯器需要打開多個項目;
  • 某個模塊升級,依賴改模塊的其他模塊需要手動升級,容易疏漏;
  • 公用的npm包重復安裝,占據大量硬盤容量,比如打包工具webpack會在每個項目中安裝一次;
  • 對新人友好,一句命令即可完成所有模塊的依賴安裝,且整個項目模塊不用到各個倉庫去找;

帶來的問題

  • 所有package代碼集中在一個項目,單個項目體積較大;
  • 所有package代碼對所有人可見,無法做權限管理;

在這篇綜述中,我收集了一些世界上最好的工具來構建一個“monorepo”,你可以在一個項目里面構建多個模塊,并且有不錯的開發者體驗,可以擴展。

這個列表并沒有進行排名,旨在根據每個工具的優點來概述其優勢。希望能幫助你節省時間,找到合適的工具。

歡迎在下方評論,分享自己的心得。

1. Yarn Workspaces

Yarn Workspaces 的目標是簡化與monorepos的工作,以更明確的方式解決 yarn link 的一個主要用例。你的依賴關系可以鏈接在一起,這意味著你的工作空間可以相互依賴,同時總是使用最新的代碼。這也是比 yarn link更好的機制,因為它只影響你的工作空間樹而不是你的整個系統。

Workspaces有助于解決一些問題,使其成為一個很好的單兵裝備。

  • 它設置了一個單一的 node_modules,不需要在項目中的不同包中重復或克隆依賴關系。
  • 你的所有項目依賴都將被安裝在一起,從而給Yarn更大的空間來更好地優化它們。
  • Yarn將使用一個單一的鎖文件,而不是為每個項目使用不同的鎖文件,這意味著更少的沖突和更容易的審查。
  • 它允許你改變你的一個軟件包的代碼,并讓使用它的其他軟件包立即看到這些變化。對一個包的源代碼的任何修改都會立即應用到其他包中。

因此,Yarn Workspaces是一個非常強大的組合,可以和列表中的幾乎所有工具,特別是Bit、Nx和Lerna等工具一起使用,作為你的monorepo管理抽象的下層。

不過,你也可以直接用workspaces發布。當一個工作空間被打包到一個存檔中時,它會動態地將任何 workspace: 依賴關系替換為一個包的版本,因此您可以將結果包發布到遠程注冊表,而無需運行中間步驟——消費者將能夠像使用任何其他包一樣使用發布的工作空間。太酷了!

2. Bit

Bit是用于構建模塊化項目的下一代工具。這是一種新的、令人興奮的單倉庫方法,在這種方法中,由同一個項目(同一個Bit工作空間)管理的模塊實際上分布在不同的范圍內,而不考慮倉庫。

Bit讓你以完全解耦的方式拆分模塊的開發,享受簡單的、整體的開發體驗來協調一切。

使用bit,你可以在你的項目中解耦組件,這樣每個組件都是獨立開發、構建、測試和發布的。每個組件都是使用特殊的環境進行開發和構建的,這些環境是可擴展和可重用的,這樣你就可以快速定制和再次使用它們。

Bit的工作空間管理著項目中所有組件之間的關系。當你對任何組件進行更改時,Bit會單獨構建和測試它,并將更改傳播到依賴關系圖中。

組件可以作為獨立的包,批量發布到NPM和/或bit.dev平臺,用于協作、消費和文檔。

Bit的UI可以幫助你查看你的monorepo的開發情況。當你編寫代碼時,每個組件都會被記錄、測試、構建等,你可以通過實時反饋和熱重載直觀地看到正在發生的事情。

Bit提供了解耦的開發環境--可重用和可定制的模塊,這些模塊將獨立組件整個生命周期所需的不同服務配置和“捆綁”在一起,如編譯、捆綁、測試、磨合、文檔等。

Bit的工作空間以簡單而全面的方式解耦組件開發

掌握組件圖——Bit定義、管理并幫助你利用項目中所有組件之間的關系。

圖形驅動的構建——當您對某個組件進行更改時,Bit會自動檢測依賴于它的其他組件,并“知道”只構建依賴組件的受影響的圖形。

“圖形驅動的構建”也意味著,萬一一個組件被標記了新的發布版本(在被導出到Bit的云端之前),Bit不僅會在每個受影響的組件上運行構建,而且會確保給它們標記一個新的發布版本。

隔離的測試和構建——每個組件都是在項目外部隔離地構建和測試的,因此您可以確切地看到更改的影響。

組件構建管道——您可以在可重用的管道中構建作業,該管道可應用于項目或所有項目中的所有組件。

批量發布——在Bit monorepo中開發的每個組件都可以作為一個獨立的包發布。Bit去掉了配置每個組件的“package.json”和其他設置文件的所有開銷。你要做的就是運行'bit tag',這樣Bit就會自動給所有修改過的組件打上版本補丁(支持semver規則),然后批量發布修改。

可重復使用的文檔模板——每個組件都使用可重復使用和可定制的模板進行文檔化,Bit為您自動完成大部分工作。用MDX工作?也許還可以添加一些可視化的例子?沒問題。

獨立渲染的組合——每個組件都是完全獨立渲染的,完全在項目之外渲染,渲染的視覺效果(在編寫代碼時熱重新加載)成為每個組件文檔的一部分。

3. NX

NX是一套先進的可擴展的開發工具,適用于monorepos,非常強調現代全棧Web技術。

空NX monorepo

NX的目標是通過CLI(帶編輯器插件)提供整體的開發體驗,并提供可控代碼共享和一致代碼生成的功能。它還提供了增量構建,因此它不會在你的每一次提交中重建和重新測試所有內容,從而加快構建時間。

有了Nx,你可以使用你喜歡的框架,集成你可能已經在使用的現代工具。例如,NX可以讓你使用與Cypress、Jest、Typescript、Prettier和其他工具的開箱即用的集成。

NX團隊還提供了NX云,通過云中的智能計算記憶和更快的構建來幫助使用NX的團隊更快地交付。

4. Rush

Rush是由微軟+開源的一個強大的monorepo基礎設施,它的目的是幫助你在一個倉庫中構建和發布許多包。

登陸頁面和一些組件,兩個項目,一個倉庫

rush的一些主要功能包括一個單一的NPM安裝(也可以和Yarn和pnpm一起使用),所以你可以將所有項目的所有依賴關系安裝到一個共同的文件夾中,使用隔離的符號鏈接為每個項目重新構建一個準確的“node_modules”文件夾。

這也有助于確保沒有幻影依賴,所以你不會意外地導入一個在package.json中缺失的庫,也不會在node_modules中發現10份lib的依賴重復。

Rush交互式CLI不錯

自動本地鏈接意味著你所有的項目都會自動地相互建立符號鏈接,當你做了一個改變,你可以看到下游的效果,而不需要發布任何東西,也沒有任何 npm link 的麻煩。

Rush獨特的安裝策略為你的所有項目生成一個快速安裝的單一收縮/鎖定文件。Rush會檢測你的依賴關系圖,并以正確的順序構建你的項目,所以如果兩個包之間沒有直接的依賴關系,Rush會將它們作為單獨的進程并行構建。

如果你只打算使用你的repo中的幾個項目,Rush提供了子集和增量構建,所以 rush rebuild --to 只對你的上游依賴進行干凈的構建。在你做了修改之后,rush rebuild --from 只對受影響的下游項目進行清理。而 rush build 則提供了強大的跨項目增量構建,Rush甚至可以通過分離項目的版本來處理循環依賴關系。

當你想發布的時候,Rush支持批量發布,所以它會檢測哪些包有變化,自動跳轉所有相關的版本號,并在每個文件夾中運行 npm publish 。

Rush還有助于實施和執行發展政策。例如,當創建PR時,你可以要求開發人員提供受影響項目的主要/次要/補丁日志條目,這些條目隨后將在發布時匯總到一個變更日志文件中。它還可以幫助你執行諸如發布前的審查、特定的依賴版本等東西。

5. Lerna

Lerna(以多頭野獸Hydra的家命名)是一個“用于管理帶有多個包的JavaScript項目的工具”。

[[360308]]

Lerna的創建是為了解決Babel的多包問題,以優化使用git和npm管理多包倉庫的工作流程,它本質上是一種工具和腳本,可以有效地管理和發布許多獨立版本的包在一個Git倉庫中。

  1. my-lerna-repo/ 
  2.   package.json 
  3.   packages/ 
  4.     package-1/ 
  5.       package.json 
  6.     package-2/ 
  7.       package.json 

Lerna 的兩個主要命令是 lerna bootstrap 和 lerna publish。bootstrap 會將 repo 中的依賴關系連接在一起,publish 會幫助發布任何更新的包。

您可以使用以下兩種模式之一來管理項目:固定(Fixed)或獨立(Independent)。

固定模式的Lerna項目是以單一的版本行來操作的,版本是保存在你的項目根目錄下的 lerna.json 文件中的 version 鍵。當您運行 lerna publish 時,如果一個模塊在上次發布后被更新,它將被更新到您發布的新版本。這是Babel目前使用的模式。

一個帶有Yarn Workspaces的Lerna例子

獨立模式Lerna項目允許維護者相互獨立地增加包的版本,每次發布時,你都會收到一個提示,提示你每一個已經改變的軟件包,以指定它是一個補丁,小的,大的或自定義的變化。獨立模式可以讓你更具體地更新每個包的版本,對于一組包來說是有意義的。

“lerna.json”文件是一個匹配包含 package.json 的目錄的globs列表,這也是lerna識別“葉子”包的方式(相對于管理整個repo的開發依賴和腳本)。例子:

  1.   "version""1.1.3"
  2.   "npmClient""npm"
  3.   "command": { 
  4.     "publish": { 
  5.       "ignoreChanges": ["ignored-file""*.md"], 
  6.       "message""chore(release): publish"
  7.       "registry""https://npm.pkg.github.com" 
  8.     }, 
  9.     "bootstrap": { 
  10.       "ignore""component-*"
  11.       "npmClientArgs": ["--no-package-lock"
  12.     } 
  13.   }, 
  14.   "packages": ["packages/*"

即使你不打算發布到NPM,Lerna仍然可以在monorepo中幫助管理版本管理和常見的開發任務。

6. Bazel構建系統 (Google)

谷歌推出了Bazel build system,它是一個類似于Make、Maven和Gradle的開源構建和測試工具,使用的是人類可讀的高級構建語言。Bazel支持多種語言的項目,并為多種平臺構建輸出。它支持大型單一倉庫中的大型代碼庫或跨多個倉庫的大型代碼庫和大量用戶。

Uber開發者使用Bazel來構建他們的Go monorepo。Uber用Go編寫了大部分的后端服務和庫,在2018年,這些服務和庫都被歸納到一個大型的Go monorepo中,現在有超過10萬個文件。Bazel讓這個項目得以擴展,縮短了構建時間,并支持其發展。

這是一個不錯的小型開源項目,以Bazel作為演示:thundergolfer/example-bazel-monorepo

Bazel被設計成大規模工作,并支持跨分布式基礎設施的增量密封構建,這是大型代碼庫所必需的。有了Bazel的遠程緩存,構建服務器還可以共享它們的構建工件。Bazel緩存所有以前完成的工作,并跟蹤對文件內容和構建命令的更改。只有在包或包的依賴關系發生更改時,才構建和測試包。

Bazel可以在Linux、macOS和Windows上運行。Bazel可以從同一個項目為多個平臺構建二進制文件和可部署的包,包括桌面、服務器和移動設備。支持許多語言,你可以擴展Bazel來支持任何其他語言或框架。

7. Buck構建系統 (Facebook)

Buck是一個鼓勵創建由代碼和資源組成的小型可重用模塊的構建系統,支持不同平臺上的各種語言。

它是由Facebook開發和使用的,作為FB單體的官方構建系統,由于被Uber開發者等團隊使用,大大縮短了構建時間,因此名聲大噪。而AirbnbEng的團隊則將構建速度提高了50%,將應用程序縮小了30%。

Uber憑借buck獲得了更好的構建結果

Buck被設計用來構建一個monorepo,而對monorepo設計的支持激發了Buck對cell和項目的支持。

Facebook的經驗是,將所有的依賴關系維護在同一個版本庫中,可以更容易地確保所有開發者擁有正確的代碼版本,并簡化了進行原子提交的過程。

Buck常用于Android和iOS開發。

8. Pants構建系統(Twitter)

2014年,Twitter推出了名為Pants的monorepo構建系統。今天,在v2版本上,Pants的目標是成為一個快速、可擴展的構建系統,以適應不斷增長的代碼庫。目前,它的重點是Python,很快就會支持其他語言。

Pants使用細粒度的工作流,并將每個工作單元與副作用隔離,因此可以利用所有可用的內核。Pant的一些最佳特性包括明確的依賴建模、細粒度的無效化、共享結果緩存、并發執行、遠程執行,以及通過插件API的可擴展性和可定制性。

Pants引擎是用Rust寫的,為的是性能。構建規則是用類型化的Python 3寫的,為了熟悉和簡單。該引擎的設計使得細粒度的無效化、并發性、密封性、緩存和遠程執行自然發生,而無需規則作者的干預。

9. Please構建系統

Please是一個跨語言的構建系統,強調高性能、可移植性、可擴展性和正確性。

[[360309]]

請確保構建步驟是在自己的密封環境中執行的,只能訪問被賦予權限的文件和env變量。增量構建意味著它只構建它需要的東西,它還提供了任務并行性,以及分布式緩存,以實現大規模的可靠和高性能的構建系統。

Please的目標也是專注于開發體驗,所以你可以享受一個常用的CLI,并為使用自動完成的常見任務定義別名。

Please用Go編寫,Please提供所有這些用戶體驗,沒有運行時依賴。并且,沒有需要處理太多配置的單個大工作區文件。

10. Oao

Oao并不是列表中最成熟、最豐富、最容易使用的工具,但它還是很有趣。它是一個基于Yarn的,有意見的monorepo管理工具,p提供monorepo功能,如安裝所有的依賴關系,添加/刪除/升級子包的依賴關系,驗證版本號,確定更新的子包,一次性發布所有的東西,更新變更日志等。

Oao可以讓你在所有子包上運行命令或 package.json 腳本,串行或并行,可選擇遵循反向依賴樹。而且,它支持yarn workspaces,從整體上優化了monorepo依賴樹,簡化了bootstrap以及依賴的添加/升級/刪除。

支持非單包發布:從oao’s的發布前檢查、標簽、版本選擇、變更日志更新等方面受益,也可以在你的單包、非單包中使用。需要注意的是,Oao使用的是同步版本方案,所以在根級的 package.json 中配置了一個主版本,而子包也將與該版本同步。你可以在這里嘗試一下。

11. Bolt

Boltpkg旨在成為一個“超級功能JavaScript項目管理工具”。

Bolt在Yarn的基礎上實現了workspaces的概念。Bolt CLI在很大程度上是Yarn CLI的替代品,你可以在任何Yarn項目中使用它。

我們知道,workspaces是嵌套在一個更大的項目/repo中的,每個workspaces都可以有自己的依賴關系,有自己的代碼和腳本。workspaces也可以歸入子目錄進行組織。

使用Bolt,你可以一次安裝所有這些包的依賴關系(而且你可以做得非常非???。而且,當你從一個工作區指定一個依賴關系到另一個工作區時,它將被鏈接到源代碼。這樣,當你去測試你的代碼時,你所有的變化都會被一起測試。

來源:https://blog.bitsrc.io/11-tools-to-build-a-monorepo-in-2021-7ce904821cc2

作者:Jonathan Saring

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2021-04-21 10:42:05

開源技術 工具

2021-08-07 09:30:40

Kubernetes容器

2021-06-10 05:43:01

開源Kubernetes容器

2019-09-24 09:37:36

Python 開發編程語言

2021-04-29 15:12:28

IT監控DevOpsSRE

2022-02-14 09:12:00

無代碼低代碼開發工具

2021-04-26 08:28:55

數據科學機器學習數據科學工具

2021-02-18 00:19:40

編程語言程序員工具

2021-11-13 08:32:41

lerna Monorepo 項目

2017-03-09 18:00:30

JavaScript代碼

2020-05-12 10:36:55

設備技術物聯網

2019-12-17 08:00:12

Kubernetes工具計算平臺

2021-07-23 09:00:00

數據庫安全工具

2020-06-09 10:24:58

JavaScript開發技術

2010-08-12 17:31:06

虛擬化

2021-12-29 18:55:55

工具Go 代碼

2021-02-02 10:50:30

數據數據科學數據清理

2020-12-09 06:17:40

編程語言開發數據科學

2021-04-07 06:46:01

編程語言開發

2021-05-20 20:56:05

編程語言開發
點贊
收藏

51CTO技術棧公眾號

99一区二区| 久久综合88中文色鬼| 国产av无码专区亚洲精品| 欧美成熟毛茸茸| 日本vs亚洲vs韩国一区三区 | 日韩mv欧美mv国产网站| 在线看国产日韩| 日本在线视频www色| 日韩一区二区三区在线观看视频| 日韩一区精品字幕| 欧美成人久久久| 天天躁日日躁aaaa视频| 精品国产乱码一区二区三区| 欧美日韩免费区域视频在线观看| 亚洲高清资源综合久久精品| 亚洲精品.www| 免费高清在线视频一区·| 欧美裸身视频免费观看| 国产精品高清无码在线观看| 精品一区二区三区四区五区| 一本一道综合狠狠老| 男人草女人视频| 成全电影播放在线观看国语| 成人高清视频免费观看| 成人乱人伦精品视频在线观看| 日韩精品久久久久久久| 婷婷久久综合| 亚洲色图狂野欧美| 国产伦精品一区二区三区精品| 成人深夜福利| 欧美午夜片欧美片在线观看| 国产玉足脚交久久欧美| 国产黄色在线网站| 欧美激情一区二区三区在线| 久久久婷婷一区二区三区不卡| 午夜精品久久久久久久99| 老色鬼久久亚洲一区二区| 久久理论片午夜琪琪电影网| 国产suv精品一区二区68| 欧美日韩一二| 亚洲欧美制服综合另类| 亚洲男女在线观看| 福利欧美精品在线| 欧美xxxx在线观看| 天天操夜夜操很很操| 95精品视频| 色综合久久88色综合天天6| 国产美女网站在线观看| 欧美6一10sex性hd| 亚洲综合久久久| 91精品国产吴梦梦| 超碰免费在线播放| 亚洲乱码国产乱码精品精的特点| 亚洲精品成人久久久998| 黄色小视频在线免费观看| 91麻豆免费观看| 国模精品一区二区三区| 视频一区二区免费| 99热在这里有精品免费| 精品高清视频| 日本一本草久在线中文| 91网站在线播放| 久久久久久国产精品mv| 四虎精品成人影院观看地址| 99久久精品免费看国产| 久久久久久久久久久久久久久久av | 深夜福利视频在线免费观看| www.日韩精品| 久久国产精品高清| 青青国产在线| 国产欧美日韩久久| 亚洲一区尤物| 欧美精品日韩少妇| 亚洲欧美另类久久久精品2019| 佐佐木明希av| ****av在线网毛片| 欧美视频裸体精品| 第四色婷婷基地| 精品91福利视频| 日韩欧美视频一区| 亚洲第九十七页| 国产一区二区三区站长工具| 精品国偷自产在线视频99| 三级影片在线看| 亚洲视频综合| 青青久久av北条麻妃黑人| 中文字幕资源网| 国产一区二区精品久久| 国产私拍一区| 国产黄在线观看| ●精品国产综合乱码久久久久| 国产91porn| 在线成人av观看| 欧美老女人在线| 亚洲色图欧美另类| 成人羞羞在线观看网站| 欧美黑人视频一区| 中文字幕精品视频在线观看| 国产又粗又猛又爽又黄91精品| 国产精品加勒比| 风间由美一区| 亚洲一区二区三区四区在线| 已婚少妇美妙人妻系列| 精品一区二区三区中文字幕 | 成人在线观看一区| 亚洲午夜久久久久久久久电影网| 久久无码高潮喷水| 欧美h版在线观看| 国产香蕉精品视频一区二区三区| 2018天天弄| 久久一日本道色综合久久| 91免费精品国偷自产在线| 深夜福利视频一区| 一区二区三区四区亚洲| 男人插女人下面免费视频| 澳门成人av| 日韩视频免费大全中文字幕| 国产精品一区二区三区四| 国产精品69久久久久孕妇欧美| 综合久久综合| 国产精品一区二区性色av| 污视频在线免费| 最近中文字幕一区二区三区| 国内自拍在线观看| 亚洲国产中文在线二区三区免| 亚洲一区二区久久| 色婷婷在线观看视频| 国精品**一区二区三区在线蜜桃| 欧美日本韩国国产| 91老司机福利在线| 日韩一二在线观看| 91香蕉视频污在线观看| 老牛国产精品一区的观看方式| 国产精品视频福利| 午夜dj在线观看高清视频完整版| 欧美视频在线观看一区| 国产手机在线观看| 一本综合久久| 国产伦精品一区二区三区视频免费 | 日韩伦理一区二区三区av在线| rebdb初裸写真在线观看| 欧美一区中文字幕| 五月天激情丁香| 蜜桃久久av一区| 日本不卡一区二区三区在线观看| 无遮挡在线观看| 亚洲国产成人精品久久| 国产无码精品一区二区| 国产成人av电影在线| a级片一区二区| 日韩不卡在线视频| 欧美—级a级欧美特级ar全黄| 国产成人免费看一级大黄| 亚洲视频在线一区二区| 亚洲欧美日韩一二三区| 欧美国产高潮xxxx1819| 1卡2卡3卡精品视频| 国产视频在线播放| 91精品国产日韩91久久久久久| 永久免费未视频| 国产一区二区调教| 99视频精品全部免费看| 午夜免费欧美电影| 欧美精品久久久久| 日韩精品视频无播放器在线看| 日韩欧美福利视频| 少妇视频在线播放| 精品一区二区三区影院在线午夜| 性欧美18一19内谢| 中文字幕一区二区三区四区久久 | 欧美精品久久| 成人黄色免费短视频| 在线播放日韩精品| 国产精品伦一区二区三区| 玉足女爽爽91| 国产一级二级在线观看| 日韩专区欧美专区| 秋霞在线一区二区| 凹凸成人在线| 国产成人高潮免费观看精品| 麻豆传媒在线免费看| 欧美www视频| 天堂在线免费观看视频| 国产精品网站在线| 久久久久无码精品| 久久综合九色| 激情视频小说图片| 免费欧美一区| 92福利视频午夜1000合集在线观看| 欧美xxx黑人xxx水蜜桃| 亚洲欧美日韩视频一区| 国产99对白在线播放| 精品动漫一区二区三区| 国精产品一区一区| 成人性生交大片免费看中文| 精品国产成人av在线免| 羞羞答答成人影院www| 精品乱码一区二区三区| 99热播精品免费| 欧美极品少妇xxxxⅹ喷水| 国产三级电影在线| 欧美成人video| 五月天中文字幕| 亚洲国产一区二区在线播放| 在线免费观看视频| 成人精品视频一区| 污网站在线免费| 久久福利精品| 2022中文字幕| 日本女优一区| 蜜桃av久久久亚洲精品| 青草伊人久久| 国产精品亚洲一区二区三区| 免费av不卡在线观看| 中文字幕亚洲综合| 麻豆影视在线| 欧美精品一区二区在线播放| 国产乱色精品成人免费视频| 一本色道久久综合亚洲91| 久久久久亚洲AV| 国产精品成人一区二区艾草| www.久久av| 成人午夜电影网站| 伊人成人免费视频| 久久激情五月激情| 九色porny91| 久久大逼视频| 国产午夜福利100集发布| 欧美 日韩 国产 一区| 一区二区三区三区在线| 激情五月综合网| 久久精品中文字幕一区二区三区| 成人动漫视频| 91免费在线观看网站| 亚洲成a人片777777久久| 国产精品久久久久久av| 久久毛片亚洲| 欧美在线视频观看免费网站| av电影院在线看| 欧美国产第一页| 尤物视频在线看| 久久艹在线视频| 福利视频在线| 久久伊人91精品综合网站| 欧美性猛交xxx乱大交3蜜桃| 最新国产精品拍自在线播放| 成人免费高清在线播放| 一色桃子一区二区| 成人在线观看网站| 在线性视频日韩欧美| 中文字幕在线免费| 色哟哟入口国产精品| 欧美jizzhd69巨大| 日韩亚洲精品电影| 国产高清一区二区三区视频 | 狠狠色综合一区二区| www.成人网| 黑人中文字幕一区二区三区| 卡通动漫国产精品| 欧美伦理一区二区| 清纯唯美综合亚洲| 亚洲国产精品女人| 国产精品mm| ww国产内射精品后入国产| 宅男噜噜噜66国产日韩在线观看| 波多野结衣家庭教师在线播放| av不卡在线看| 精品久久久久久久无码 | 色琪琪久久se色| 在线观看成人av| 综合日韩在线| 亚洲人成无码网站久久99热国产| 国产一区成人| 国产日韩成人内射视频| 久久国产精品一区二区| 精产国品一区二区三区| caoporn国产精品| 丰腴饱满的极品熟妇| 国产精品美女久久久久久久久 | 亚洲国产精品久久久久婷婷884| 国产成人无码精品久久久久| 日韩欧美一区二区在线| 中文字幕第三页| 日韩午夜中文字幕| 日本黄在线观看| 色妞欧美日韩在线| 麻豆av在线播放| 国产精品久久久久久久一区探花 | 一本久久综合| 日本中文字幕观看| www.66久久| 亚洲一区电影在线观看| 亚洲成人免费观看| 中文字幕一二区| 亚洲а∨天堂久久精品喷水| sese一区| 97在线观看视频| 亚洲精品三区| 久久精品欧美| 欧美一区在线看| 男人舔女人下面高潮视频| 国产麻豆一精品一av一免费| 波多野结衣福利| 亚洲精品美腿丝袜| 欧美国产一级片| 精品久久久久99| 欧美天天影院| 国产成人aa精品一区在线播放 | 日本高清不卡一区二区三| 亚洲欧洲美洲一区二区三区| 国模吧无码一区二区三区| 国产在线国偷精品产拍免费yy| 久久久久久久久免费看无码| 亚洲欧美日韩国产综合| 亚洲 欧美 中文字幕| 精品乱人伦一区二区三区| 98在线视频| 欧美一区二区三区图| 哺乳挤奶一区二区三区免费看 | 亚洲国产精品一区制服丝袜| xxww在线观看| 久久精品水蜜桃av综合天堂| 国产污视频在线看| 欧美一区二区视频在线观看2020| 成人77777| 国产成人精品电影久久久| 精品无人区一区二区| 中国女人做爰视频| 国模娜娜一区二区三区| 五月激情四射婷婷| 欧美亚洲一区二区三区四区| 欧美大片aaa| 2021久久精品国产99国产精品| 精品一区在线视频| 国产精品久久精品日日| 日本欧美www| 亚洲四色影视在线观看| 欧美aa在线| 国模精品娜娜一二三区| 在线日韩中文| 极品白嫩的小少妇| 夜夜嗨av一区二区三区| 99在线观看免费| 久久久精品视频在线观看| 99视频有精品高清视频| 亚洲欧洲一区二区| 日韩成人免费看| 国产精品美女高潮无套| 色久优优欧美色久优优| 黄色片在线播放| 国产成人精品电影| 日韩精品免费一区二区在线观看| 色一情一乱一伦一区二区三区日本| 久久久国产精品麻豆| 天堂网一区二区| 国产亚洲一区二区在线| 青草综合视频| 公共露出暴露狂另类av| 国产一区二区三区精品欧美日韩一区二区三区 | 麻豆91蜜桃| 美女久久一区| 91l九色lporny| 欧美色倩网站大全免费| 免费av毛片在线看| 99久久综合狠狠综合久久止| 国产精品vip| 这里只有精品在线观看视频 | av网站在线观看不卡| 国产亚洲综合av| 一区二区视频网| 久久亚洲精品网站| 1313精品午夜理伦电影| 久久久久久久久久久99| 久久色成人在线| 伊人亚洲综合网| 久久的精品视频| 激情av综合| 噼里啪啦国语在线观看免费版高清版| 国产精品女主播在线观看| 国产强被迫伦姧在线观看无码| 欧美床上激情在线观看| 国产精品白丝一区二区三区| 无码人妻丰满熟妇区毛片| 国产精品久久久久久久久图文区| 国产日韩精品suv| 911国产网站尤物在线观看| av一区二区在线观看| 午夜免费一级片| 午夜电影网一区| av在线日韩国产精品| 国产91精品一区二区绿帽| 久久xxxx精品视频| 欧美国产在线看| 亚洲视频在线观看| 日韩欧美中文字幕在线视频| 国产99久久九九精品无码| 亚洲欧洲精品一区二区三区不卡| 人妻妺妺窝人体色www聚色窝| 国产精品黄视频| 亚洲国产一区二区三区a毛片|