常見包管理與構建工具列表
JavaScript
服務器端 Javascript 通常使用NPM作為依賴管理工具。
- 通過NPM提供的npm命令來進行依賴的下載、升級和移除。
- 通過package.json來定義軟件包的元信息、開發依賴(開發或測試需要)、部署依賴(運行時需要)。
- 依賴遞歸地存儲在node_modules中。
- 依賴在項目之間是隔離的,全局安裝(-g)會使它成為命令行工具而不是全局依賴。 > 遞歸的依賴下載風格使得NPM的緩存及其重要。緩存位于~/.npm下,這里保存這.tgz格式的包文件。 </ul>
- Grunt通過插件來完成任務,每個插件相當于Makefile的一個命令。
- Grunt任務定義在Gruntfile.js中。
- NPM提供了眾多的Grunt插件,當然你也可以手寫。
- Grunt任務繼承了JavaScript的異步特性。 </ul>
- 通過bower命令進行依賴管理。
- bower.json定義了軟件包的元信息與依賴。
- 依賴所在路徑可以在bower.json中進行設置。
- Bower只是一個命令行工具,你需要在正確的路徑執行Bower命令。 </ul>
- 通過pom.xml來描述Maven項目。
- Maven是項目管理工具,其功能包括依賴管理、軟件構建。
- Maven通過.properties文件和命令行參數讀取系統特性。 </ul>
- 通過build.xml來描述構建過程。
- build.xml的邏輯類似Makefile,每個target由命令和參數構成。
- 通過命令行參數來讀取系統特性。 </ul>
- distutils是python的標準庫;
- setuptools試圖完成distutils缺少的特性而開始開發;
- easy_install是setuptools的命令行接口,有更多的特性;
- 在setuptools的開發過程中產生了分歧,于是出現了distribute,它fork自setuptools,并在2013年取得和解并重新merge到setuptools 0.7版本;
- 相比于上述工具,pip是一個更加高階的接口,pip成為事實上的python軟件的安裝工具;
- eggs和wheels成為事實上的二進制python軟件的安裝工具。 </ol>
- venv在python3.3中引入,用于在自己的目錄下創建輕量級的虛擬環境,也可以孤立于系統環境。
- virtualenv則是一個python軟件包,用于創建孤立的python環境。 </ul>
JavaScript 通常使用 Grunt 進行構建。
前端 lib
前端 lib 可以通過 Bower 來下載。Bower 不僅可以下載已注冊的軟件包,還可以下載Github Repo,甚至是一個文件的URL。
Bower可以靈活地下載各種依賴,但它的缺點也是明顯的:未注冊的軟件包往往包含冗余的非生產環境的代碼,有時甚至需要手動構建。
</blockquote>Java
Maven是基于項目對象模型(POM)的項目管理工具,通過文本文件來描述項目的版本、URL、License、依賴等信息。
Ant是由Java寫成的編譯、測試和部署Java應用的命令行工具。
Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基于Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。
Python
Python的包管理工具能講一整天的故事:distribute、setuptools、distutils、easy_install、pip、distutils2、packaging、eggs、wheels、pyvenv、virtualenv……
這也是我為什么討厭安裝python軟件的原因,與此同時,舊版本的python2比新的python3更加流行以及兩者不兼容也常常給Linux包管理造成麻煩。
</blockquote>現在開始講故事:
venv和virtualenv則是用來創建python虛擬環境來實現應用隔離的。
Ruby
Ruby的軟件包單元為RubyGem。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!