常見包管理與構建工具列表

jopen 9年前發布 | 13K 次閱讀 構建工具

JavaScript

服務器端 Javascript 通常使用NPM作為依賴管理工具。

  • 通過NPM提供的npm命令來進行依賴的下載、升級和移除。
  • 通過package.json來定義軟件包的元信息、開發依賴(開發或測試需要)、部署依賴(運行時需要)。
  • 依賴遞歸地存儲在node_modules中。
  • 依賴在項目之間是隔離的,全局安裝(-g)會使它成為命令行工具而不是全局依賴。 > 遞歸的依賴下載風格使得NPM的緩存及其重要。緩存位于~/.npm下,這里保存這.tgz格式的包文件。
  • </ul>

    JavaScript 通常使用 Grunt 進行構建。

    • Grunt通過插件來完成任務,每個插件相當于Makefile的一個命令。
    • Grunt任務定義在Gruntfile.js中。
    • NPM提供了眾多的Grunt插件,當然你也可以手寫。
    • Grunt任務繼承了JavaScript的異步特性。
    • </ul>

      前端 lib

      前端 lib 可以通過 Bower 來下載。Bower 不僅可以下載已注冊的軟件包,還可以下載Github Repo,甚至是一個文件的URL。

      • 通過bower命令進行依賴管理。
      • bower.json定義了軟件包的元信息與依賴。
      • 依賴所在路徑可以在bower.json中進行設置。
      • Bower只是一個命令行工具,你需要在正確的路徑執行Bower命令。
      • </ul>

        Bower可以靈活地下載各種依賴,但它的缺點也是明顯的:未注冊的軟件包往往包含冗余的非生產環境的代碼,有時甚至需要手動構建。

        </blockquote>

        Java

        Maven是基于項目對象模型(POM)的項目管理工具,通過文本文件來描述項目的版本、URL、License、依賴等信息。

        • 通過pom.xml來描述Maven項目。
        • Maven是項目管理工具,其功能包括依賴管理、軟件構建。
        • Maven通過.properties文件和命令行參數讀取系統特性。
        • </ul>

          Ant是由Java寫成的編譯、測試和部署Java應用的命令行工具。

          • 通過build.xml來描述構建過程。
          • build.xml的邏輯類似Makefile,每個target由命令和參數構成。
          • 通過命令行參數來讀取系統特性。
          • </ul>

            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>

            現在開始講故事:

            1. distutils是python的標準庫;
            2. setuptools試圖完成distutils缺少的特性而開始開發;
            3. easy_install是setuptools的命令行接口,有更多的特性;
            4. 在setuptools的開發過程中產生了分歧,于是出現了distribute,它fork自setuptools,并在2013年取得和解并重新merge到setuptools 0.7版本;
            5. 相比于上述工具,pip是一個更加高階的接口,pip成為事實上的python軟件的安裝工具
            6. eggs和wheels成為事實上的二進制python軟件的安裝工具
            7. </ol>

              venv和virtualenv則是用來創建python虛擬環境來實現應用隔離的。

              • venv在python3.3中引入,用于在自己的目錄下創建輕量級的虛擬環境,也可以孤立于系統環境。
              • virtualenv則是一個python軟件包,用于創建孤立的python環境。
              • </ul>

                Ruby

                Ruby的軟件包單元為RubyGem

                • Gem由.gemspec文件描述。
                • Gem的構建過程由Rakefile描述。
                • Rake是Gem的構建工具,它與Make類似,用以完成自動化測試和代碼生成。
                • Bundle則是Ruby的包管理工具,用來跟蹤和下載正確版本的Gem。
                • </ul>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!