精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

色欲人妻综合网| 天天做天天爱天天高潮| 黄色免费av网站| 精品久久电影| 日韩一区二区精品| 色综合av综合无码综合网站| 97电影在线| 国产成人在线免费观看| 情事1991在线| 国产精品老熟女一区二区| 日韩av中文字幕一区| 欧美日韩视频在线观看一区二区三区| 青青在线视频免费观看| 国产小视频福利在线| 国产福利91精品一区| 欧洲中文字幕国产精品| 欧美国产日韩在线观看成人| 亚洲成人一品| 日韩精品一区在线观看| www.色偷偷.com| 123区在线| 亚洲视频在线一区| 欧美专区一二三| 亚洲国产一二三区| 激情欧美一区二区三区在线观看| 欧美做爰性生交视频| 久久精品视频久久| 亚洲成人tv| 亚洲欧洲一区二区三区在线观看| jjzz黄色片| 欧美经典影片视频网站| 欧美日韩一区二区三区在线看| 欧美精品一区免费| 丁香花在线影院| 亚洲女爱视频在线| 伊人色综合影院| 91在线网址| 国产亚洲综合在线| 欧洲国产精品| 凸凹人妻人人澡人人添| 国产白丝精品91爽爽久久| 91精品综合久久久久久五月天| 亚洲精品一区二三区| 国产农村妇女毛片精品久久莱园子| 欧美美女操人视频| 国产人妻精品一区二区三区不卡| 日韩一区电影| 中文字幕亚洲天堂| 99热99这里只有精品| 青青草成人影院| www日韩欧美| 中文国语毛片高清视频| 国产精品久久天天影视| 精品久久久91| 私库av在线播放| 国模吧视频一区| 国内精品久久久久影院优| 青娱乐91视频| 亚洲毛片视频| 欧美中文在线观看| 波多野结衣家庭主妇| 蜜桃av一区二区三区| 国产日韩欧美在线看| 一本久道久久综合无码中文| 韩国三级中文字幕hd久久精品| 91久久精品国产91久久| 国产xxxx孕妇| 不卡高清视频专区| 久久久久久国产精品mv| 狠狠狠综合7777久夜色撩人| 国产精品人成在线观看免费| 中文字幕成人一区| 欧美人与性动交α欧美精品图片| 亚洲一区二区视频在线观看| 国产女大学生av| 卡通欧美亚洲| 91精品国产免费| 欧美做受高潮中文字幕| 亚洲亚洲免费| 久久精品久久久久久国产 免费| 久久免费看少妇高潮v片特黄| 亚洲国产高清一区| 国产成人精品电影久久久| 中文字幕在线播放av| 国产成人在线免费观看| 欧美福利一区二区三区| 麻豆影院在线| 亚洲激情成人在线| 久久无码高潮喷水| 只有精品亚洲| 亚洲国产日韩欧美在线动漫| 亚洲综合欧美综合| 欧美欧美全黄| 国产成人高清激情视频在线观看| 国产乱码精品一区二区三区精东| 99国产精品一区| 自拍偷拍99| 成人性生活视频| 欧美一区二区国产| 日韩丰满少妇无码内射| 午夜精品久久久久99热蜜桃导演 | 成人精品gif动图一区| 国产91精品入口17c| 成人jjav| 欧美视频中文字幕在线| 污污视频在线免费| 欧美三级伦理在线| …久久精品99久久香蕉国产| 国产日韩精品suv| 国产日韩精品视频一区| 人妻av中文系列| 国产高清亚洲| 国产亚洲视频中文字幕视频| 国产精品成人国产乱| 久久精品国产成人一区二区三区| 免费一区二区三区| gogo久久| 日韩欧美123| 国产3级在线观看| 日韩福利电影在线观看| 好吊色欧美一区二区三区四区| 欧美精品hd| 在线看国产一区| 狠狠人妻久久久久久综合蜜桃| 国内成人在线| 91在线精品观看| 黄色在线播放网站| 欧美日韩国产高清一区二区三区| 不卡一区二区在线观看| 亚洲免费精品| 国产成人成网站在线播放青青 | 亚洲动漫在线观看| 欧美精品18videosex性欧美| 一级成人免费视频| 国产精品午夜免费| 午夜国产一区二区三区| 国产探花一区| 国产精品久久久久久久久免费看 | 国产乱码久久久久| 国产精品每日更新在线播放网址| 国产精品涩涩涩视频网站| 制服丝袜第二页| 欧美一区2区| 国产精品电影网站| 都市激情在线视频| 欧美系列一区二区| 熟女少妇内射日韩亚洲| 日韩精品电影一区亚洲| 欧美精品尤物在线| 综合毛片免费视频| 亚洲视频一区二区| 中文字幕一区二区在线视频| 国产精品国产馆在线真实露脸| 网站一区二区三区| 91欧美日韩| 亚洲自拍高清视频网站| 黄色污污视频在线观看| 亚洲国产精品女人久久久| 永久免费看片在线播放| 91蝌蚪porny| 韩国视频一区二区三区| 久久久久av| 国产超碰91| 少妇视频在线观看| 一区二区在线视频播放| 一级特黄aaa大片| 亚洲综合一区二区三区| 一级黄色片毛片| 日日摸夜夜添夜夜添精品视频| 亚洲成人在线视频网站| 久久久精品区| 91超碰国产精品| 欧美成人中文字幕| 欧美视频久久久| 色欧美片视频在线观看在线视频| 一区二区三区在线观看免费视频| 久久av中文字幕片| 国产精品成人久久电影| 神马电影久久| 2014亚洲精品| 成人欧美大片| 久久久av一区| 欧洲视频在线免费观看| 欧美日韩国产经典色站一区二区三区| 久久久久久久极品内射| 久久久久久久久一| 亚洲第一成肉网| 国产欧美午夜| 综合色婷婷一区二区亚洲欧美国产| 日韩中文字幕视频网| 茄子视频成人在线| 菠萝蜜视频国产在线播放| 日韩精品中文字幕久久臀| 一本久道久久综合无码中文| 亚洲mv在线观看| 无码人妻精品中文字幕 | 欧美视频精品在线| 久久一级黄色片| 国产精品女同一区二区三区| 人妻体内射精一区二区三区| 免费看欧美美女黄的网站| 婷婷无套内射影院| 99久久精品费精品国产| 久久综合入口| 波多野结衣欧美| 91精品久久久久久综合乱菊 | 欧美性生交xxxxx久久久| 日韩av手机在线免费观看| 26uuu精品一区二区在线观看| 亚洲精品在线网址| 免费的国产精品| 成人久久久久久久久| 国内精品久久久久久久97牛牛| 亚洲国产一区在线| 欧美日韩播放| 久久国产精品一区二区三区| 日韩影片在线观看| 国产一区二区丝袜| 日韩一区二区三区免费视频| 97视频在线观看播放| av在线free| 久久久99免费视频| 老司机在线看片网av| 在线看欧美日韩| 男女网站在线观看| 日韩成人av一区| 日本黄色一区二区三区| 日韩精品在线一区| 99热这里只有精品5| 制服丝袜在线91| 亚洲天堂avav| 欧美视频在线一区| 日韩不卡高清视频| 色拍拍在线精品视频8848| 亚洲高清毛片一区二区| 午夜电影网一区| 日韩欧美激情视频| 精品久久久久久国产| 亚洲国产精品成人无久久精品| 一区二区在线免费| 免费在线观看国产精品| 亚洲欧美日韩一区二区| 九九热视频在线免费观看| 亚洲欧洲一区二区在线播放| 精品国产国产综合精品| 亚洲欧美日韩中文播放 | 一本色道久久综合精品竹菊| 青青操免费在线视频| 欧美日韩精品二区| 欧美成人一区二区三区四区| 91精品办公室少妇高潮对白| 在线观看日本视频| 在线影院国内精品| 中文字幕在线日亚洲9| 欧美绝品在线观看成人午夜影视| 亚洲视频久久久| 宅男噜噜噜66一区二区66| 国产喷水福利在线视频| 精品久久久久久久久久久院品网 | 永久免费毛片在线播放不卡| 成人av一区| 欧美大码xxxx| 国产精品xx| 国产精品第三页| 精品国产鲁一鲁****| 国产99在线播放| 精品一区免费| 亚洲视频欧美在线| 欧美一区二区| 亚洲 高清 成人 动漫| 日韩经典中文字幕一区| 日韩成人av免费| 不卡的看片网站| 在线观看国产精品一区| 日韩一区欧美一区| 久久精品国产亚洲AV无码麻豆| 欧美性生活大片免费观看网址| 美女黄页在线观看| 日韩欧美国产1| 日本免费不卡| 久久精品国产成人| 国产资源在线观看入口av| 国产精品综合久久久| 大香伊人久久精品一区二区| 欧美午夜免费| 欧美午夜在线| www.日本xxxx| 成人激情小说乱人伦| 99精品欧美一区二区| 亚洲国产一区二区视频| 亚洲精品91天天久久人人| 日韩欧美中文一区| 国产黄色在线| 91国内在线视频| 欧美高清影院| 欧美亚洲另类久久综合| 国产精品vip| 日本中文字幕精品—区二区| av午夜精品一区二区三区| 日日操免费视频| 精品成人乱色一区二区| 国产精品人妻一区二区三区| 亚洲美女www午夜| 日韩免费影院| 成人黄色片网站| 色综合综合网| 久草热视频在线观看| 精品在线观看视频| 白白色免费视频| 亚洲一区二区五区| 99热这里只有精品在线| 一本色道久久88亚洲综合88| 成av人片在线观看www| 91九色精品视频| 成人同人动漫免费观看| 日日橹狠狠爱欧美超碰| 成人免费观看视频| 日韩女优一区二区| 欧美日韩国产经典色站一区二区三区| 欧美男男激情freegay| 午夜精品久久17c| 波多野结衣欧美| 久久免费一级片| 国内精品国产成人| 久草福利资源在线| 欧美视频第二页| 国产黄色片在线观看| 日本久久久久久| 蜜桃a∨噜噜一区二区三区| 久久av综合网| 大陆成人av片| 国产精品成人免费一区二区视频| 日韩欧美中文字幕一区| 主播国产精品| 亚洲xxx自由成熟| 欧美国产三级| 99精品视频免费版的特色功能| 国产精品蜜臀av| 97精品久久人人爽人人爽| 深夜福利一区二区| 韩国精品视频在线观看 | 欧美色图天堂网| www.国产精品.com| 国产男女猛烈无遮挡91| 久久精品高清| av噜噜在线观看| 亚洲精选视频免费看| а√天堂资源在线| 欧美精品成人91久久久久久久| 亚洲精品一区国产| 91免费黄视频| 99免费精品视频| 亚洲第一网站在线观看| 亚洲夜晚福利在线观看| 欧美a一级片| 亚洲中文字幕无码一区二区三区| 国产91丝袜在线播放0| 国产成人在线观看网站| 亚洲欧美日韩综合| 国内欧美日韩| 久久综合亚洲精品| av不卡免费电影| 久久久久在线视频| 中文字幕国产精品久久| 日韩成人视屏| 国产精品后入内射日本在线观看| 久久久久高清精品| 国产精品久久无码一三区| 精品中文字幕乱| 五月天亚洲一区| www.亚洲高清| 亚洲一区二区在线观看视频| 全部免费毛片在线播放网站| 国产伦精品免费视频| 很黄很黄激情成人| 99久久人妻无码精品系列| 欧美色电影在线| 啪啪免费视频一区| 日韩电影免费观看高清完整| 久久97超碰色| 国产精品成人av久久| 中文字幕日韩欧美| 美女一区二区在线观看| www.涩涩涩| 亚洲国产成人porn| yiren22综合网成人| av资源一区二区| 天堂影院一区二区| 蜜臀久久精品久久久用户群体| 亚洲激情第一页| 日韩一区二区三区四区五区 | 国产精品vvv| 中文字幕在线亚洲三区| 91香蕉视频黄| av一区二区三| 国产精品日韩欧美大师| 亚洲精品美女91| 日本福利片在线观看| 亚洲欧美中文日韩在线| 日韩欧美中文字幕在线视频|