npm package.json文件解讀

来源:http://www.cnblogs.com/yzg1/archive/2017/02/07/6373852.html
-Advertisement-
Play Games

每個Nodejs項目的根目錄下麵,一般都會有一個package.json文件。該文件可以由 生成,定義了項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。 package.json文件內部就是一個JSON對象,該對象的每一個成員就是當前項目的一項設置。 基本欄位 1. na ...


每個Nodejs項目的根目錄下麵,一般都會有一個package.json文件。該文件可以由npm init生成,定義了項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。

package.json文件內部就是一個JSON對象,該對象的每一個成員就是當前項目的一項設置。

基本欄位

  1. name

    項目名稱(npm包名)。必需欄位

  2. version

    項目版本。必需欄位。
    版本號的格式為"1.0.0",分別代表“主版本號.次版本號.修訂號”。它的遞增規則如下:
    • 主版本號:當你做了不相容的API 修改;
    • 次版本號:當你做了向下相容的功能性新增;
    • 修訂號:當你做了向下相容的問題修正。

    在實際使用中,一般可以看到各種形式的版本號:

    *: 任意版本
    1.1.0: 指定版本
    ~1.1.0: 1.1.0 <= 版本 < 1.2.0
    ^1.1.0: 1.1.0 <= 版本 < 2.0.0
    latest:安裝最新版本。
    • *表示任意版本;
    • ~首碼表示,安裝大於指定的這個版本,並且匹配到 x.y.z 中 z 最新的版本;
    • ^首碼在 ^0.y.z 時的表現和 ~0.y.z 是一樣的,然而 ^1.y.z 的時候,就會匹配到 y 和 z 都是最新的版本;
    • 特殊的是,當版本號為 ^0.0.z 或者 ~0.0.z 的時候,考慮到 0.0.z 是一個不穩定版本, 所以它們都相當於 =0.0.z。
  3. author && contributors

    項目作者以及貢獻者。author是字元串形式的作者名,contributors是一個項目貢獻者數組。

  4. description && keywords

    項目描述和項目關鍵字。幫助人們在使用npm search時找到這個包。

  5. license

    許可證。

功能性欄位

  1. scripts

    定義腳本命令。它的每一個屬性,對應一段腳本。並且可以在命令行下使用npm run命令執行這段腳本。

    npm 腳本的原理非常簡單。每當執行npm run,就會自動新建一個 Shell,在這個 Shell 裡面執行指定的腳本命令。因此,只要是 Shell(一般是 Bash)可以運行的命令,就可以寫在 npm 腳本裡面。

    比較特別的是,npm run新建的這個 Shell,會將當前目錄的node_modules/.bin子目錄加入PATH變數,執行結束後,再將PATH變數恢複原樣。

    更多可參考阮老師的 npm scripts 使用指南

  2. dependencies && devDependencies

    npm install在安裝node模塊時,有兩種命令參數可以把它們的信息寫入package.json文件: –save以及–save-dev–save會把依賴包名稱添加到package.json文件dependencies鍵下,–save-dev則添加到package.json文件devDependencies鍵下。

    dependencies欄位指定了項目生產環境中需要的依賴,即正常運行該包時所依賴的模塊,devDependencies指定項目開發所需要的依賴項,像一些進行單元測試之類的包,比如grunt-contrib-uglify,我們用它混淆js文件,它們不會被部署到生產環境。

    它們都指向一個對象。該對象的各個成員,分別由模塊名和對應的版本要求組成,表示依賴的模塊及其版本範圍。

  3. bin

    用來指定各個內部命令對應的可執行文件的位置。

    例如:

    "bin": {
        "someTool": "./bin/someTool.js"
    }

    上面代碼指定,someTool 命令對應的可執行文件為 bin 子目錄下的 someTool.js

  4. main

    指定包的入口程式文件。這個欄位的預設值是模塊根目錄下麵的index.js。

  5. config

    用於向環境變數輸出值。

    比如:

    {
        // ...
        "config" : { "port" : "8080" },
    }

    然後通過process.env.npm_package_config_port讀取該值。

其他欄位

  1. engines

    指定node的工作版本

  2. man

    指定當前模塊的man文檔的位置。

  3. preferGlobal

    布爾類型值,表示當用戶不將該模塊安裝為全局模塊時(即不用–global參數),要不要顯示警告。

    ...
    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是微服務? 微服務存在多種定義。 如果搜索 Internet,會發現許多有用的資源,這些資源提供了自己的觀點和定義。 但在微服務的以下大部分特性上,已廣泛達成共識: 封裝客戶方案或業務方案。 你要解決什麼問題? 由小型工程團隊開發。 使用任何編程語言編寫並使用任何框架。 由獨立控製版本、部署及縮 ...
  • 1.module.export可以公共方法,也可以公共變數 2. 調用公共方法的時候,寫預設參數的時候可以這樣: function wxReq(method, url, header, data, successCb, failCb, fail, that) {} 調用的時候可以 wxReq("GE ...
  • 原生JavaScript實現AJAX、JSONP 相信大多數前端開發者在需要與後端進行數據交互時,為了方便快捷,都會選擇JQuery中封裝的AJAX方法,但是有些時候,我們只需要JQuery的AJAX請求方法,而其他的功能用到的很少,這顯然是沒必要的。 其實,原生JavaScript實現AJAX並不 ...
  • 職責鏈模式 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係,將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。 書里的訂單的例子 假設我們負責一個售賣手機的電商網站,經過分別交納500元定金和200元定金的兩輪預定(訂單已在此時生成),現在已經到了正式購 ...
  • 一、js表達式 定義:表達式是指能計算出值得任何可用程式單元。 ——wiki 表達式是js一種短語,可使js解釋器用來產生一個值。 ——js《權威指南》 1.原始表達式。 常量/直接量: 3.14/ "test" 等 關鍵字: null,this,true,false 等 變數: i,k,j 等 復 ...
  • 中間件express.static 我們使用express初始化一個目錄的時候,會在app.js中看到一大推的app.use。 其中一個主要的中間件是 express.static (4.0版本依舊保留的中間件) 通過 express.static 可以幫助我們 托管 靜態文件,js,css,img ...
  • 由OpenDigg 出品的前端開源項目周報第七期來啦。我們的前端開源周報集合了OpenDigg一周來新收錄的優質的前端開源項目,方便前端開發人員便捷的找到自己需要的項目工具等。lottie-react-native 實時渲染After Effects動畫 react-navigation 學習一次隨 ...
  • 寫在前面的話 過去一年自己接觸了不少手機前端開發,得益於現在手機性能的提升和4G普及,感覺使用混合技術開發手機App已經可以滿足越來越多的應用場景了。新年伊始,對自己2016年所學知識做一個階段性總結,記錄一個自製的“小而萌”Hybrid App開發歷程,共勉! 〖擴展閱讀〗 企業移動應用開發 混合 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...