vue之package.json文件解析


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": "normalize.css@3.0.3",
  "scripts": {},
  "_shasum": "acc00262e235a2caa91363a2e5e3bfa4f8ad05c6",
  "_from": "normalize.css@3.0.3",
  "_npmVersion": "2.7.0",
  "_nodeVersion": "0.10.35",
  "_npmUser": {
    "name": "necolas",
    "email": "nicolasgallagher@gmail.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "necolas",
      "email": "nicolasgallagher@gmail.com"
    }
  ],
  "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 <zhangsan@163.com>。
    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三位,分別代表主版本號、次版本號和補丁版本號。當代碼變更時,版本號按以下原則更新。

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

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




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM