1. 程式人生 > >vue之package.json文件解析

vue之package.json文件解析

dia 貢獻 entry posit 生產 解析 issues files tar

1、package.json是什麽?

什麽是Node.js的模塊(Module)?在Node.js中,模塊是一個庫或框架,也是一個Node.js項目。Node.js項目遵循模塊化的架構,當我們創建了一個Node.js項目,意味著創建了一個模塊,這個模塊的描述文件,被稱為package.json。
通常情況下package.json內容出錯,會導致項目出現bug,甚至阻止項目的運行。下面是normalize包的package.json文件:

{
  "name": "normalize.css",
  "version": "3.0.3",
  "description": "Normalize.css as a node packaged module",
  "style": "normalize.css",
  "files": [
    "LICENSE.md",
    "normalize.css"
  ],
  "homepage": "http://necolas.github.io/normalize.css",
  "repository": {
    "type": "git",
    "url": "git://github.com/necolas/normalize.css.git"
  },
  "main": "normalize.css",
  "author": {
    "name": "Nicolas Gallagher"
  },
  "license": "MIT",
  "gitHead": "2bdda84272650aedfb45d8abe11a6d177933a803",
  "bugs": {
    "url": "https://github.com/necolas/normalize.css/issues"
  },
  "_id": "[email protected]",
  "scripts": {},
  "_shasum": "acc00262e235a2caa91363a2e5e3bfa4f8ad05c6",
  "_from": "[email protected]",
  "_npmVersion": "2.7.0",
  "_nodeVersion": "0.10.35",
  "_npmUser": {
    "name": "necolas",
    "email": "[email protected]"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "[email protected]"
    },
    {
      "name": "necolas",
      "email": "[email protected]"
    }
  ],
  "dist": {
    "shasum": "acc00262e235a2caa91363a2e5e3bfa4f8ad05c6",
    "tarball": "https://registry.npmjs.org/normalize.css/-/normalize.css-3.0.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-3.0.3.tgz",
  "readme": "ERROR: No README data found!"
}

2、package.json屬性說明

name - 包名.
version - 包的版本號。
description - 包的描述。
homepage - 包的官網URL。
author - 包的作者,它的值是你在https://npmjs.org網站的有效賬戶名,遵循“賬戶名<郵件>”的規則,例如:zhangsan <[email protected]>
contributors - 包的其他貢獻者。
dependencies / devDependencies - 生產/開發

環境依賴包列表。它們將會被安裝在 node_module 目錄下。
repository - 包代碼的Repo信息,包括type和URL,type可以是git或svn,URL則是包的Repo地址。
main - main 字段指定了程序的主入口文件,require(‘moduleName‘) 就會加載這個文件。這個字段的默認值是模塊根目錄下面的 index.js。
keywords - 關鍵字

上述參數是極為常見的參數,另外還可以設置scriptlicense等等。除了官方必須的一些參數外,我們也可以存儲我們自己的關於模塊的描述信息在package.json。

3、生成package.json文件

我們可以使用NPM生成package.json文件,它可以包含最基本的設置以及結果。

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) runoob                   # 模塊名
version: (1.0.0) 
description: Node.js 測試模塊(www.runoob.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/runoob/runoob.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "runoob",
  "version": "1.0.0",
  "description": "Node.js 測試模塊(www.runoob.com)",
  ……
}

Is this ok? (yes) yes

這樣就生成了一個最基本的package.json文件,註意手動更改的時候要完全遵循嚴格的JSON書寫格式,否則容易出現意想不到的簡單錯誤。

翻譯:

該實用程序將引導您創建package.json文件。
它僅涵蓋最常見的項目,並嘗試猜測合理的默認值。

有關這些字段的權威文檔,請參閱`npm help json`
而且他們到底做了什麽。

之後使用`npm install <pkg> --save`來安裝軟件包
將其保存為package.json文件中的依賴項。

隨時按^ C退出。
name:(node_modules)runoob#模塊名
版本:(1.0.0)
description:Node.js測試模塊(www.runoob.com)#描述
入口點:(index.js)
test命令:make test
git repository:https://github.com/runoob/runoob.git#Github地址
關鍵字:
作者:
執照:(ISC)
即將寫入...... / node_modules / package.json:#生成地址

4、關於版本號的描述

npm模塊的完整的版本號一般是【主版本 . 次要版本 . 補丁版本】,一般情況下,次要版本號發生改變的話,表示程序有重大更新。

(1)使用~表示版本範圍

這裏大概可以如此概述:① 補丁版本號缺失,則允許補丁版本號升級;② 次要版本號+補丁版本號缺失,則允許次要版本號+補丁版本號升級。

標識示例描述版本範圍說明
~2.3.4 主版本+次要版本+補丁版本 2.3.4 <= version < 2.4.0 在主版本+次要版本不允許變更的前提下,允許補丁版本升級(補丁板板號下限是4,無上限)。
~2.3 主版本+次要版本 2.3.0 <= version < 2.4.0 在主版本+次要版本不允許變更的前提下,允許補丁版本升級。
~2 主版本 2.0.0 <= version < 3.0.0 在主版本不允許變更的前提下,允許次要版本+補丁版本升級。
(2)使用^表示版本範圍

這裏大概可以如此概述:
① 若主版本號不為0,則允許次要版本號+補丁版本號升級;② 若主版本號為0,次要版本號不為0,則允許補丁版本號升級;③ 若主版本號+次要版本號皆為0,將無法升級模塊;④ 若主版本不為0,補丁版本缺失(將被視作0),那麽將允許次要版本+補丁版本升級到到最新;⑤ 若主版本為0,補丁版本缺失(將被視作0),那麽允許補丁版本升級到最新;⑥ 若次要版本+補丁版本均缺失,此時補丁版本,被視作1,那麽將允許次要版本+補丁版本升級到最新。

標識示例描述版本範圍說明
^1.3.4 主版本號不為0 1.3.4 <= version < 2.0.0 主版本不為0,允許次要版本+補丁版本升級(此例下限是1.3.4,上線是2.0.0但不匹配2.0.0)
^0.2.3 主版本號為0,次要版本號不為0 0.2.3 <= version < 0.3.0 主版本為0,次要版本不為0,允許補丁版本升級(此例下限是0.2.3,上限是0.3.0但不匹配0.3.0)
^0.0.3 主版本號+次要版本號均為0 0.0.3 <= version < 0.0.4 主版本號+次要版本號均為0,無法升級模塊
^1.3 主版本不為0,補丁版本缺失 1.3.0 <= version < 2.0.0 主版本不為0,補丁版本因缺失被視作0,允許次要版本+補丁版本升級到到最新(此例下限是1.3.0,上線是2.0.0但不匹配2.0.0)
^0.2 主版本為0,補丁版本缺失 0.2.0 <= version < 0.3.0 主版本為0,補丁版本因缺失被視作0,允許補丁版本升級到最新(此例下限是0.2.0,上限是0.3.0但不匹配0.3.0)
^1 主版本號不為0,次要版本+補丁版本均缺失 1.0.0 <= version < 2.0.0 主版本不為0,次要版本+補丁版本因缺失被視作0,允許次要版本+補丁版本升級(此例下限是1.0.0,上線是2.0.0但不匹配2.0.0)
^0 主版本號為0,次要版本+補丁版本均缺失 0.0.1 <= version < 1.0.0 主版本為0,次要版本因缺失被視作0,補丁版本雖缺失但只能被視作1,允許缺失的次要版本+補丁版本升級到最新(此例下限是0.0.1,上限是1.0.0但不匹配1.0.0)
(3)語義版本號

使用NPM下載和發布代碼時都會接觸到版本號。NPM使用語義版本號來管理代碼,這裏簡單介紹一下。

語義版本號分為X.Y.Z三位,分別代表主版本號、次版本號和補丁版本號。當代碼變更時,版本號按以下原則更新。

  1. 如果只是修復bug,需要更新Z位。
  2. 如果是新增了功能,但是向下兼容,需要更新Y位。
  3. 如果有大變動,向下不兼容,需要更新X位。

版本號有了這個保證後,在申明第三方包依賴時,除了可依賴於一個固定版本號外,還可依賴於某個範圍的版本號。例如"argv": "0.0.x"表示依賴於0.0.x系列的最新版argv。



vue之package.json文件解析