日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Package.json 配置完全解讀,充分了解這些配置有助于我們提高開發(fā)的效率

來源: 責(zé)編: 時(shí)間:2023-09-18 21:40:13 399觀看
導(dǎo)讀今天來看看前端的大管家 package.json 文件相關(guān)的配置,充分了解這些配置有助于我們提高開發(fā)的效率,規(guī)范我們的項(xiàng)目。文章內(nèi)容較多,建議先收藏在學(xué)習(xí)!在每個前端項(xiàng)目中,都有package.json文件,它是項(xiàng)目的配置文件,常見的配置有

swU28資訊網(wǎng)——每日最新資訊28at.com

今天來看看前端的大管家 package.json 文件相關(guān)的配置,充分了解這些配置有助于我們提高開發(fā)的效率,規(guī)范我們的項(xiàng)目。文章內(nèi)容較多,建議先收藏在學(xué)習(xí)!swU28資訊網(wǎng)——每日最新資訊28at.com

在每個前端項(xiàng)目中,都有package.json文件,它是項(xiàng)目的配置文件,常見的配置有配置項(xiàng)目啟動、打包命令,聲明依賴包等。package.json文件是一個JSON對象,該對象的每一個成員就是當(dāng)前項(xiàng)目的一項(xiàng)設(shè)置。package.json作為前端的大管家,到底有哪些配置和我們的日常開發(fā)密切相關(guān)?下面就來仔細(xì)剖析一下這個文件。swU28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)我們搭建一個新項(xiàng)目時(shí),往往腳手架就幫我們初始化好了一個package.jaon配置文件,它位于項(xiàng)目的根目錄中。當(dāng)使用react腳手架(create-react-app)初始化一個項(xiàng)目時(shí),其package.json文件內(nèi)容如下:swU28資訊網(wǎng)——每日最新資訊28at.com

{  "name": "my-app",  "version": "0.1.0",  "private": true,  "dependencies": {    "@testing-library/jest-dom": "^5.14.1",    "@testing-library/react": "^11.2.7",    "@testing-library/user-event": "^12.8.3",    "react": "^17.0.2",    "react-dom": "^17.0.2",    "react-scripts": "4.0.3",    "web-vitals": "^1.1.2"  },  "scripts": {    "start": "react-scripts start",    "build": "react-scripts build",    "test": "react-scripts test",    "eject": "react-scripts eject"  },  "eslintConfig": {    "extends": [      "react-app",      "react-app/jest"    ]  },  "browserslist": {    "production": [      ">0.2%",      "not dead",      "not op_mini all"    ],    "development": [      "last 1 chrome version",      "last 1 firefox version",      "last 1 safari version"    ]  }}

當(dāng)克隆一個新的項(xiàng)目到本地時(shí),需要執(zhí)行npm install(yarn install)命令來安裝項(xiàng)目所需的依賴文件。當(dāng)執(zhí)行該命令時(shí),就會根據(jù) package.json 文件中的配置信息來自動下載所需的模塊,也就是配置項(xiàng)目所需的運(yùn)行和開發(fā)環(huán)境。swU28資訊網(wǎng)——每日最新資訊28at.com

package.json 常見配置項(xiàng)如下:swU28資訊網(wǎng)——每日最新資訊28at.com

swU28資訊網(wǎng)——每日最新資訊28at.com

一、必須屬性

package.json中最重要的兩個字段就是name和version,它們都是必須的,如果沒有,就無法正常執(zhí)行npm install命令。npm規(guī)定package.json文件是由名稱和版本號作為唯一標(biāo)識符的。swU28資訊網(wǎng)——每日最新資訊28at.com

1、name

name很容易理解,就是項(xiàng)目的名稱,它是一個字符串。在給name字段命名時(shí),需要注意以下幾點(diǎn):swU28資訊網(wǎng)——每日最新資訊28at.com

  • 名稱的長度必須小于或等于214個字符,不能以“.”和“_”開頭,不能包含大寫字母(這是因?yàn)楫?dāng)軟件包在npm上發(fā)布時(shí),會基于此屬性獲得自己的URL,所以不能包含非URL安全字符(non-url-safe));
  • 名稱可以作為參數(shù)被傳入require(""),用來導(dǎo)入模塊,所以應(yīng)當(dāng)盡可能的簡短、語義化;
  • 名稱不能和其他模塊的名稱重復(fù),可以使用npm view命令查詢模塊明是否重復(fù),如果不重復(fù)就會提示404:

swU28資訊網(wǎng)——每日最新資訊28at.com

如果npm包上有對應(yīng)的包,則會顯示包的詳細(xì)信息:swU28資訊網(wǎng)——每日最新資訊28at.com

swU28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際上,我們平時(shí)開發(fā)的很多項(xiàng)目并不會發(fā)布在npm上,所以這個名稱是否標(biāo)準(zhǔn)可能就不是那么重要,它不會影響項(xiàng)目的正常運(yùn)行。如果需要發(fā)布在npm上,name字段一定要符合要求。swU28資訊網(wǎng)——每日最新資訊28at.com

2、version

version字段表示該項(xiàng)目包的版本號,它是一個字符串。在每次項(xiàng)目改動后,即將發(fā)布時(shí),都要同步的去更改項(xiàng)目的版本號。版本號的使用規(guī)范如下:swU28資訊網(wǎng)——每日最新資訊28at.com

  • 版本號的命名遵循語義化版本2.0.0規(guī)范,格式為:主版本號.次版本號.修訂號,通常情況下,修改主版本號是做了大的功能性的改動,修改次版本號是新增了新功能,修改修訂號就是修復(fù)了一些bug;
  • 如果某個版本的改動較大,并且不穩(wěn)定,可能如法滿足預(yù)期的兼容性需求,就需要發(fā)布先行版本,先行版本通過會加在版本號的后面,通過“-”號連接以點(diǎn)分隔的標(biāo)識符和版本編譯信息:內(nèi)部版本(alpha)、公測版本(beta)和候選版本(rc,即release candiate)。

可以通過以下命令來查看npm包的版本信息,以react為例:swU28資訊網(wǎng)——每日最新資訊28at.com

// 查看最新版本npm view react version// 查看所有版本npm view react versions

當(dāng)執(zhí)行第二條命令時(shí),結(jié)果如下:swU28資訊網(wǎng)——每日最新資訊28at.com

swU28資訊網(wǎng)——每日最新資訊28at.com

二、描述信息

package.jaon中有五個和項(xiàng)目包描述信息相關(guān)的配置字段,下面就分別來看看這些字段的含義。swU28資訊網(wǎng)——每日最新資訊28at.com

1、description

description字段用來描述這個項(xiàng)目包,它是一個字符串,可以讓其他開發(fā)者在 npm 的搜索中發(fā)現(xiàn)我們的項(xiàng)目包。swU28資訊網(wǎng)——每日最新資訊28at.com

2、keywords

keywords字段是一個字符串?dāng)?shù)組,表示這個項(xiàng)目包的關(guān)鍵詞。和description一樣,都是用來增加項(xiàng)目包的曝光率的。下面是eslint包的描述和關(guān)鍵詞:swU28資訊網(wǎng)——每日最新資訊28at.com

swU28資訊網(wǎng)——每日最新資訊28at.com

3、author

author顧名思義就是作者,表示該項(xiàng)目包的作者。它有兩種形式,一種是字符串格式:swU28資訊網(wǎng)——每日最新資訊28at.com

"author": "CUGGZ <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)"

另一種是對象形式:swU28資訊網(wǎng)——每日最新資訊28at.com

"author": {  "name" : "CUGGZ",  "email" : "xxxxx@xx.com",  "url" : "https://juejin.cn/user/3544481220801815"}

4、contributors

contributors表示該項(xiàng)目包的貢獻(xiàn)者,和author不同的是,該字段是一個數(shù)組,包含所有的貢獻(xiàn)者,它同樣有兩種寫法:swU28資訊網(wǎng)——每日最新資訊28at.com

"contributors": [  "CUGGZ0 <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)",  "CUGGZ1 <xxxxx@xx.com> (https://juejin.cn/user/3544481220801815)" ]
"contributors": [  {   "name" : "CUGGZ0",   "email" : "xxxxx@xx.com",   "url" : "https://juejin.cn/user/3544481220801815" },  {   "name" : "CUGGZ1",   "email" : "xxxxx@xx.com",   "url" : "https://juejin.cn/user/3544481220801815" } ]

5、homepage

homepage就是項(xiàng)目的主頁地址了,它是一個字符串。swU28資訊網(wǎng)——每日最新資訊28at.com

6、repository

repository表示代碼的存放倉庫地址,通常有兩種書寫形式。第一種是字符串形式:swU28資訊網(wǎng)——每日最新資訊28at.com

"repository": "https://github.com/facebook/react.git"

除此之外,還可以顯式地設(shè)置版本控制系統(tǒng),這時(shí)就是對象的形式:swU28資訊網(wǎng)——每日最新資訊28at.com

"repository": {  "type": "git",  "url": "https://github.com/facebook/react.git"}

7、bugs

bugs表示項(xiàng)目提交問題的地址,該字段是一個對象,可以添加一個提交問題的地址和反饋的郵箱:swU28資訊網(wǎng)——每日最新資訊28at.com

"bugs": {   "url" : "https://github.com/facebook/react/issues",  "email" : "xxxxx@xx.com"}

最常見的bugs就是Github中的issues頁面,如上就是react的issues頁面地址。swU28資訊網(wǎng)——每日最新資訊28at.com

三、依賴配置

通常情況下,我們的項(xiàng)目會依賴一個或者多個外部的依賴包,根據(jù)依賴包的不同用途,可以將他們配置在下面的五個屬性下:dependencies、devDependencies、peerDependencies、bundledDependencies、optionalDependencies 。下面就來看看每個屬性的含義。swU28資訊網(wǎng)——每日最新資訊28at.com

1、dependencies

dependencies字段中聲明的是項(xiàng)目的生產(chǎn)環(huán)境中所必須的依賴包。當(dāng)使用 npm 或 yarn 安裝npm包時(shí),該npm包會被自動插入到此配置項(xiàng)中:swU28資訊網(wǎng)——每日最新資訊28at.com

npm install <PACKAGENAME>yarn add <PACKAGENAME>

當(dāng)在安裝依賴時(shí)使用--save參數(shù),也會將新安裝的npm包寫入dependencies屬性。swU28資訊網(wǎng)——每日最新資訊28at.com

npm install --save <PACKAGENAME>

該字段的值是一個對象,該對象的各個成員,分別由模塊名和對應(yīng)的版本要求組成,表示依賴的模塊及其版本范圍。swU28資訊網(wǎng)——每日最新資訊28at.com

"dependencies": {   "react": "^17.0.2",   "react-dom": "^17.0.2",   "react-scripts": "4.0.3",},

這里每一項(xiàng)配置都是一個鍵值對(key-value), key表示模塊名稱,value表示模塊的版本號。版本號遵循主版本號.次版本號.修訂號的格式規(guī)定:swU28資訊網(wǎng)——每日最新資訊28at.com

  • 固定版本: 上面的react-scripts的版本4.0.3就是固定版本,安裝時(shí)只安裝這個指定的版本。
  • 波浪號: 比如~4.0.3,表示安裝4.0.x的最新版本(不低于4.0.3),也就是說安裝時(shí)不會改變主版本號和次版本號。
  • 插入號: 比如上面 react 的版本^17.0.2,表示安裝17.x.x的最新版本(不低于17.0.2),也就是說安裝時(shí)不會改變主版本號。如果主版本號為0,那么插入號和波浪號的行為是一致的。
  • latest:安裝最新的版本。

需要注意,不要把測試或者過渡性的依賴放在dependencies,避免生產(chǎn)環(huán)境出現(xiàn)意外的問題。swU28資訊網(wǎng)——每日最新資訊28at.com

2、devDependencies

devDependencies中聲明的是開發(fā)階段需要的依賴包,如Webpack、Eslint、Babel等,用于輔助開發(fā)。它們不同于 dependencies,因?yàn)樗鼈冎恍璋惭b在開發(fā)設(shè)備上,而無需在生產(chǎn)環(huán)境中運(yùn)行代碼。當(dāng)打包上線時(shí)并不需要這些包,所以可以把這些依賴添加到 devDependencies 中,這些依賴依然會在本地指定 npm install 時(shí)被安裝和管理,但是不會被安裝到生產(chǎn)環(huán)境中。swU28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)使用 npm 或 yarn 安裝軟件包時(shí),指定以下參數(shù)后,新安裝的npm包會被自動插入到此列表中:swU28資訊網(wǎng)——每日最新資訊28at.com

npm install --save-dev <PACKAGENAME>yarn add --dev <PACKAGENAME>
"devDependencies": {  "autoprefixer": "^7.1.2",  "babel-core": "^6.22.1"}

3、peerDependencies

有些情況下,我們的項(xiàng)目和所依賴的模塊,都會同時(shí)依賴另一個模塊,但是所依賴的版本不一樣。比如,我們的項(xiàng)目依賴A模塊和B模塊的1.0版,而A模塊本身又依賴B模塊的2.0版。大多數(shù)情況下,這不是問題,B模塊的兩個版本可以并存,同時(shí)運(yùn)行。但是,有一種情況,會出現(xiàn)問題,就是這種依賴關(guān)系將暴露給用戶。swU28資訊網(wǎng)——每日最新資訊28at.com

最典型的場景就是插件,比如A模塊是B模塊的插件。用戶安裝的B模塊是1.0版本,但是A插件只能和2.0版本的B模塊一起使用。這時(shí),用戶要是將1.0版本的B的實(shí)例傳給A,就會出現(xiàn)問題。因此,需要一種機(jī)制,在模板安裝的時(shí)候提醒用戶,如果A和B一起安裝,那么B必須是2.0模塊。swU28資訊網(wǎng)——每日最新資訊28at.com

peerDependencies字段就是用來供插件指定其所需要的主工具的版本。swU28資訊網(wǎng)——每日最新資訊28at.com

"name": "chai-as-promised","peerDependencies": {   "chai": "1.x"}

上面代碼指定在安裝chai-as-promised模塊時(shí),主程序chai必須一起安裝,而且chai的版本必須是1.x。如果項(xiàng)目指定的依賴是chai的2.0版本,就會報(bào)錯。swU28資訊網(wǎng)——每日最新資訊28at.com

需要注意,從npm 3.0版開始,peerDependencies不再會默認(rèn)安裝了。swU28資訊網(wǎng)——每日最新資訊28at.com

4、optionalDependencies

如果需要在找不到包或者安裝包失敗時(shí),npm仍然能夠繼續(xù)運(yùn)行,則可以將該包放在optionalDependencies對象中,optionalDependencies對象中的包會覆蓋dependencies中同名的包,所以只需在一個地方進(jìn)行設(shè)置即可。swU28資訊網(wǎng)——每日最新資訊28at.com

需要注意,由于optionalDependencies中的依賴可能并為安裝成功,所以一定要做異常處理,否則當(dāng)獲取這個依賴時(shí),如果獲取不到就會報(bào)錯。swU28資訊網(wǎng)——每日最新資訊28at.com

5、bundledDependencies

上面的幾個依賴相關(guān)的配置項(xiàng)都是一個對象,而bundledDependencies配置項(xiàng)是一個數(shù)組,數(shù)組里可以指定一些模塊,這些模塊將在這個包發(fā)布時(shí)被一起打包。swU28資訊網(wǎng)——每日最新資訊28at.com

需要注意,這個字段數(shù)組中的值必須是在dependencies, devDependencies兩個里面聲明過的包才行。swU28資訊網(wǎng)——每日最新資訊28at.com

6、engines

當(dāng)我們維護(hù)一些舊項(xiàng)目時(shí),可能對npm包的版本或者Node版本有特殊要求,如果不滿足條件就可能無法將項(xiàng)目跑起來。為了讓項(xiàng)目開箱即用,可以在engines字段中說明具體的版本號:swU28資訊網(wǎng)——每日最新資訊28at.com

"engines": { "node": ">=8.10.3 <12.13.0",  "npm": ">=6.9.0"}

需要注意,engines只是起一個說明的作用,即使用戶安裝的版本不符合要求,也不影響依賴包的安裝。swU28資訊網(wǎng)——每日最新資訊28at.com

四、腳本配置

1、scripts

scripts 是 package.json中內(nèi)置的腳本入口,是key-value鍵值對配置,key為可運(yùn)行的命令,可以通過 npm run 來執(zhí)行命令。除了運(yùn)行基本的scripts命令,還可以結(jié)合pre和post完成前置和后續(xù)操作。先來看一組scripts:swU28資訊網(wǎng)——每日最新資訊28at.com

"scripts": { "dev": "node index.js",  "predev": "node beforeIndex.js",  "postdev": "node afterIndex.js"}

這三個js文件中都有一句console:swU28資訊網(wǎng)——每日最新資訊28at.com

// index.jsconsole.log("scripts: index.js")// beforeIndex.jsconsole.log("scripts: before index.js")// afterIndex.jsconsole.log("scripts: after index.js")

當(dāng)我們執(zhí)行npm run dev命令時(shí),輸出結(jié)果如下:swU28資訊網(wǎng)——每日最新資訊28at.com

scripts: before index.jsscripts: index.jsscripts: after index.js

可以看到,三個命令都執(zhí)行了,執(zhí)行順序是predev→dev→postdev。如果scripts命令存在一定的先后關(guān)系,則可以使用這三個配置項(xiàng),分別配置執(zhí)行命令。swU28資訊網(wǎng)——每日最新資訊28at.com

通過配置scripts屬性,可以定義一些常見的操作命令:swU28資訊網(wǎng)——每日最新資訊28at.com

"scripts": {  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",  "start": "npm run dev",  "unit": "jest --config test/unit/jest.conf.js --coverage",  "test": "npm run unit",  "lint": "eslint --ext .js,.vue src test/unit",  "build": "node build/build.js"}

這些腳本是命令行應(yīng)用程序。可以通過調(diào)用 npm run XXX 或 yarn XXX 來運(yùn)行它們,其中 XXX 是命令的名稱。例如:npm run dev。我們可以為命令使用任何的名稱,腳本也可以是任何操作。swU28資訊網(wǎng)——每日最新資訊28at.com

使用好該字段可以大大的提升開發(fā)效率。swU28資訊網(wǎng)——每日最新資訊28at.com

2、config

config字段用來配置scripts運(yùn)行時(shí)的配置參數(shù),如下所示:swU28資訊網(wǎng)——每日最新資訊28at.com

"config": { "port": 3000}

如果運(yùn)行npm run start,則port字段會映射到npm_package_config_port環(huán)境變量中:swU28資訊網(wǎng)——每日最新資訊28at.com

console.log(process.env.npm_package_config_port) // 3000

用戶可以通過npm config set foo:port 3001 命令來重寫port的值。swU28資訊網(wǎng)——每日最新資訊28at.com

五、文件&目錄

下面來看看package.json中和文件以及目錄相關(guān)的屬性。swU28資訊網(wǎng)——每日最新資訊28at.com

1、main

main 字段用來指定加載的入口文件,在 browser 和 Node 環(huán)境中都可以使用。如果我們將項(xiàng)目發(fā)布為npm包,那么當(dāng)使用 require 導(dǎo)入npm包時(shí),返回的就是main字段所列出的文件的module.exports 屬性。如果不指定該字段,默認(rèn)是項(xiàng)目根目錄下的index.js。如果沒找到,就會報(bào)錯。swU28資訊網(wǎng)——每日最新資訊28at.com

該字段的值是一個字符串:swU28資訊網(wǎng)——每日最新資訊28at.com

"main": "./src/index.js",

2、browser

browser字段可以定義 npm 包在 browser 環(huán)境下的入口文件。如果 npm 包只在 web 端使用,并且嚴(yán)禁在 server 端使用,使用 browser 來定義入口文件。swU28資訊網(wǎng)——每日最新資訊28at.com

"browser": "./src/index.js"

3、module

module字段可以定義 npm 包的 ESM 規(guī)范的入口文件,browser 環(huán)境和 node 環(huán)境均可使用。如果 npm 包導(dǎo)出的是 ESM 規(guī)范的包,使用 module 來定義入口文件。swU28資訊網(wǎng)——每日最新資訊28at.com

"module": "./src/index.mjs",

需要注意,*.js 文件是使用 commonJS 規(guī)范的語法(require('xxx')),*.mjs 是用 ESM 規(guī)范的語法(import 'xxx')。swU28資訊網(wǎng)——每日最新資訊28at.com

上面三個的入口入口文件相關(guān)的配置是有差別的,特別是在不同的使用場景下。在Web環(huán)境中,如果使用loader加載ESM(ES module),那么這三個配置的加載順序是browser→module→main,如果使用require加載CommonJS模塊,則加載的順序?yàn)閙ain→module→browser。swU28資訊網(wǎng)——每日最新資訊28at.com

Webpack在進(jìn)行項(xiàng)目構(gòu)建時(shí),有一個target選項(xiàng),默認(rèn)為Web,即構(gòu)建Web應(yīng)用。如果需要編譯一些同構(gòu)項(xiàng)目,如node項(xiàng)目,則只需將webpack.config.js的target選項(xiàng)設(shè)置為node進(jìn)行構(gòu)建即可。如果再Node環(huán)境中加載CommonJS模塊,或者ESM,則只有main字段有效。swU28資訊網(wǎng)——每日最新資訊28at.com

4、bin

bin字段用來指定各個內(nèi)部命令對應(yīng)的可執(zhí)行文件的位置:swU28資訊網(wǎng)——每日最新資訊28at.com

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

這里,someTool 命令對應(yīng)的可執(zhí)行文件為 bin 目錄下的 someTool.js,someTool.js會建立符號鏈接node_modules/.bin/someTool。由于node_modules/.bin/目錄會在運(yùn)行時(shí)加入系統(tǒng)的PATH變量,因此在運(yùn)行npm時(shí),就可以不帶路徑,直接通過命令來調(diào)用這些腳本。因此,下面的寫法可以簡寫:swU28資訊網(wǎng)——每日最新資訊28at.com

scripts: {    start: './node_modules/bin/someTool.js build'}// 簡寫scripts: {    start: 'someTool build'}

所有node_modules/.bin/目錄下的命令,都可以用npm run [命令]的格式運(yùn)行。swU28資訊網(wǎng)——每日最新資訊28at.com

上面的配置在package.json包中提供了一個映射到本地文件名的bin字段,之后npm包將鏈接這個文件到prefix/fix里面,以便全局引入。或者鏈接到本地的node_modules/.bin/文件中,以便在本項(xiàng)目中使用。swU28資訊網(wǎng)——每日最新資訊28at.com

5、files

files配置是一個數(shù)組,用來描述當(dāng)把npm包作為依賴包安裝時(shí)需要說明的文件列表。當(dāng)npm包發(fā)布時(shí),files指定的文件會被推送到npm服務(wù)器中,如果指定的是文件夾,那么該文件夾下面所有的文件都會被提交。swU28資訊網(wǎng)——每日最新資訊28at.com

"files": [    "LICENSE",    "Readme.md",    "index.js",    "lib/" ]

如果有不想提交的文件,可以在項(xiàng)目根目錄中新建一個.npmignore文件,并在其中說明不需要提交的文件,防止垃圾文件推送到npm上。這個文件的形式和.gitignore類似。寫在這個文件中的文件即便被寫在files屬性里也會被排除在外。比如可以在該文件中這樣寫:swU28資訊網(wǎng)——每日最新資訊28at.com

node_modules.vscodebuild.DS_Store

6、man

man 命令是 Linux 中的幫助指令,通過該指令可以查看 Linux 中的指令幫助、配置文件幫助和編程幫助等信息。如果 node.js 模塊是一個全局的命令行工具,在 package.json 通過 man 屬性可以指定 man 命令查找的文檔地址:swU28資訊網(wǎng)——每日最新資訊28at.com

"man": [ "./man/npm-access.1", "./man/npm-audit.1"]

man 字段可以指定一個或多個文件, 當(dāng)執(zhí)行man {包名}時(shí), 會展現(xiàn)給用戶文檔內(nèi)容。swU28資訊網(wǎng)——每日最新資訊28at.com

需要注意:swU28資訊網(wǎng)——每日最新資訊28at.com

  • man文件必須以數(shù)字結(jié)尾,如果經(jīng)過壓縮,還可以使用.gz后綴。這個數(shù)字表示文件安裝到哪個 man 節(jié)中。
  • 如果 man 文件名稱不是以模塊名稱開頭的,安裝的時(shí)候會加上模塊名稱前綴。

對于上面的配置,可以使用以下命令來執(zhí)行查看文檔:swU28資訊網(wǎng)——每日最新資訊28at.com

man npm-accessman npm-audit

7、directories

directories字段用來規(guī)范項(xiàng)目的目錄。node.js 模塊是基于 CommonJS 模塊化規(guī)范實(shí)現(xiàn)的,需要嚴(yán)格遵循 CommonJS 規(guī)范。模塊目錄下除了必須包含包項(xiàng)目描述文件 package.json 以外,還需要包含以下目錄:swU28資訊網(wǎng)——每日最新資訊28at.com

  • bin :存放可執(zhí)行二進(jìn)制文件的目錄
  • lib :存放js代碼的目錄
  • doc :存放文檔的目錄
  • test :存放單元測試用例代碼的目錄
  • ...

在實(shí)際的項(xiàng)目目錄中,我們可能沒有按照這個規(guī)范進(jìn)行命名,那么就可以在directories字段指定每個目錄對應(yīng)的文件路徑:swU28資訊網(wǎng)——每日最新資訊28at.com

"directories": {    "bin": "./bin",    "lib": "./lib",    "doc": "./doc",    "test" "./test",    "man": "./man"},

這個屬性實(shí)際上沒有什么實(shí)際的作用,當(dāng)然不排除未來會有什么比較有意義的用處。swU28資訊網(wǎng)——每日最新資訊28at.com

六、發(fā)布配置

下面來看看和npm項(xiàng)目包發(fā)布相關(guān)的配置。swU28資訊網(wǎng)——每日最新資訊28at.com

1、private

private字段可以防止我們意外地將私有庫發(fā)布到npm服務(wù)器。只需要將該字段設(shè)置為true:swU28資訊網(wǎng)——每日最新資訊28at.com

"private": true

2、preferGlobal

preferGlobal字段表示當(dāng)用戶不把該模塊安裝為全局模塊時(shí),如果設(shè)置為true就會顯示警告。它并不會真正的防止用戶進(jìn)行局部的安裝,只是對用戶進(jìn)行提示,防止產(chǎn)生誤解:swU28資訊網(wǎng)——每日最新資訊28at.com

"preferGlobal": true

3、publishConfig

publishConfig配置會在模塊發(fā)布時(shí)生效,用于設(shè)置發(fā)布時(shí)一些配置項(xiàng)的集合。如果不想模塊被默認(rèn)標(biāo)記為最新,或者不想發(fā)布到公共倉庫,可以在這里配置tag或倉庫地址。更詳細(xì)的配置可以參考 npm-config。swU28資訊網(wǎng)——每日最新資訊28at.com

通常情況下,publishConfig會配合private來使用,如果只想讓模塊發(fā)布到特定npm倉庫,就可以這樣來配置:swU28資訊網(wǎng)——每日最新資訊28at.com

"private": true,"publishConfig": {  "tag": "1.1.0",  "registry": "https://registry.npmjs.org/",  "access": "public"}

4、os

os字段可以讓我們設(shè)置該npm包可以在什么操作系統(tǒng)使用,不能再什么操作系統(tǒng)使用。如果我們希望開發(fā)的npm包只運(yùn)行在linux,為了避免出現(xiàn)不必要的異常,建議使用Windows系統(tǒng)的用戶不要安裝它,這時(shí)就可以使用os配置:swU28資訊網(wǎng)——每日最新資訊28at.com

"os" ["linux"]   // 適用的操作系統(tǒng)"os" ["!win32"]  // 禁用的操作系統(tǒng)

5、cpu

該配置和OS配置類似,用CPU可以更準(zhǔn)確的限制用戶的安裝環(huán)境:swU28資訊網(wǎng)——每日最新資訊28at.com

"cpu" ["x64", "AMD64"]   // 適用的cpu"cpu" ["!arm", "!mips"]  // 禁用的cpu

可以看到,黑名單和白名單的區(qū)別就是,黑名單在前面加了一個“!”。swU28資訊網(wǎng)——每日最新資訊28at.com

6、license

license 字段用于指定軟件的開源協(xié)議,開源協(xié)議表述了其他人獲得代碼后擁有的權(quán)利,可以對代碼進(jìn)行何種操作,何種操作又是被禁止的。常見的協(xié)議如下:swU28資訊網(wǎng)——每日最新資訊28at.com

  • MIT :只要用戶在項(xiàng)目副本中包含了版權(quán)聲明和許可聲明,他們就可以拿你的代碼做任何想做的事情,你也無需承擔(dān)任何責(zé)任。
  • Apache :類似于 MIT ,同時(shí)還包含了貢獻(xiàn)者向用戶提供專利授權(quán)相關(guān)的條款。
  • GPL :修改項(xiàng)目代碼的用戶再次分發(fā)源碼或二進(jìn)制代碼時(shí),必須公布他的相關(guān)修改。

可以這樣來聲明該字段:swU28資訊網(wǎng)——每日最新資訊28at.com

"license": "MIT"

七、第三方配置

package.json 文件還可以承載命令特有的配置,例如 Babel、ESLint 等。它們每個都有特有的屬性,例如 eslintConfig、babel 等。它們是命令特有的,可以在相應(yīng)的命令/項(xiàng)目文檔中找到如何使用它們。下面來看幾個常用的第三方配置項(xiàng)。swU28資訊網(wǎng)——每日最新資訊28at.com

1、typings

typings字段用來指定TypeScript的入口文件:swU28資訊網(wǎng)——每日最新資訊28at.com

"typings": "types/index.d.ts",

該字段的作用和main配置相同。swU28資訊網(wǎng)——每日最新資訊28at.com

2、eslintConfig

eslint的配置可以寫在單獨(dú)的配置文件.eslintrc.json 中,也可以寫在package.json文件的eslintConfig配置項(xiàng)中。swU28資訊網(wǎng)——每日最新資訊28at.com

"eslintConfig": {      "root": true,      "env": {        "node": true      },      "extends": [        "plugin:vue/essential",        "eslint:recommended"      ],      "rules": {},      "parserOptions": {        "parser": "babel-eslint"     },}

3、babel

babel用來指定Babel的編譯配置,代碼如下:swU28資訊網(wǎng)——每日最新資訊28at.com

"babel": { "presets": ["@babel/preset-env"], "plugins": [...]}

4、unpkg

使用該字段可以讓 npm 上所有的文件都開啟 cdn 服務(wù),該CND服務(wù)由unpkg提供:swU28資訊網(wǎng)——每日最新資訊28at.com

"unpkg": "dist/vue.js"

5、lint-staged

lint-staged是一個在Git暫存文件上運(yùn)行l(wèi)inters的工具,配置后每次修改一個文件即可給所有文件執(zhí)行一次lint檢查,通常配合gitHooks一起使用。swU28資訊網(wǎng)——每日最新資訊28at.com

"lint-staged": { "*.js": [   "eslint --fix",    "git add"  ]}

使用lint-staged時(shí),每次提交代碼只會檢查當(dāng)前改動的文件。swU28資訊網(wǎng)——每日最新資訊28at.com

6、gitHooks

gitHooks用來定義一個鉤子,在提交(commit)之前執(zhí)行ESlint檢查。在執(zhí)行l(wèi)int命令后,會自動修復(fù)暫存區(qū)的文件。修復(fù)之后的文件并不會存儲在暫存區(qū),所以需要用git add命令將修復(fù)后的文件重新加入暫存區(qū)。在執(zhí)行pre-commit命令之后,如果沒有錯誤,就會執(zhí)行g(shù)it commit命令:swU28資訊網(wǎng)——每日最新資訊28at.com

"gitHooks": { "pre-commit": "lint-staged"}

這里就是配合上面的lint-staged來進(jìn)行代碼的檢查操作。swU28資訊網(wǎng)——每日最新資訊28at.com

7、browserslist

browserslist字段用來告知支持哪些瀏覽器及版本。Babel、Autoprefixer 和其他工具會用到它,以將所需的 polyfill 和 fallback 添加到目標(biāo)瀏覽器。比如最上面的例子中的該字段值:swU28資訊網(wǎng)——每日最新資訊28at.com

"browserslist": {  "production": [    ">0.2%",    "not dead",    "not op_mini all"  ],  "development": [    "last 1 chrome version",    "last 1 firefox version",    "last 1 safari version"  ]}

這里指定了一個對象,里面定義了生產(chǎn)環(huán)境和開發(fā)環(huán)境的瀏覽器要求。上面的development就是指定開發(fā)環(huán)境中支持最后一個版本的chrome、Firefox、safari瀏覽器。這個屬性是不同的前端工具之間共用目標(biāo)瀏覽器和 node 版本的配置工具,被很多前端工具使用,比如Babel、Autoprefixer等。swU28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-10411-0.htmlPackage.json 配置完全解讀,充分了解這些配置有助于我們提高開發(fā)的效率

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Java中日志記錄不完整或不規(guī)范,難以進(jìn)行問題排查和系統(tǒng)監(jiān)控

下一篇: 增強(qiáng)現(xiàn)實(shí)正在改變市場營銷

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 5月安卓手機(jī)好評榜:魅族20 Pro奪冠

    性能榜和性價(jià)比榜之后,我們來看最后的安卓手機(jī)好評榜,數(shù)據(jù)來源安兔兔評測,收集時(shí)間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • K6:面向開發(fā)人員的現(xiàn)代負(fù)載測試工具

    K6 是一個開源負(fù)載測試工具,可以輕松編寫、運(yùn)行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測試各種應(yīng)用程序,包括 Web
  • 分享六款相見恨晚的PPT模版網(wǎng)站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網(wǎng)站旨在為全球Office用戶提供豐富的高品質(zhì)原創(chuàng)PPT模板、實(shí)用文檔、數(shù)據(jù)圖表及個性化定制服務(wù)。優(yōu)點(diǎn):OfficePLUS是微軟官方網(wǎng)站,囊括PPT模板、Word模
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強(qiáng)大而靈活的功能,用于修改或增強(qiáng)函數(shù)或類的行為。裝飾器本質(zhì)上是一個函數(shù),它接受另一個函數(shù)或類作為參數(shù),并返回一個新的函數(shù)或類。它們通常用
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是&ldquo;環(huán)境保
  • 阿里瓴羊One推出背后,零售企業(yè)迎數(shù)字化新解

    作者:劉曠近年來隨著數(shù)字經(jīng)濟(jì)的高速發(fā)展,各式各樣的SaaS應(yīng)用服務(wù)更是層出不窮,但本質(zhì)上SaaS大多局限于單一業(yè)務(wù)流層面,對用戶核心關(guān)切的增長問題等則沒有提供更好的解法。在Saa
  • 三星折疊屏手機(jī)去年銷售近1000萬臺 今年目標(biāo)定為1500萬

    7月29日消息,三星率先發(fā)力可折疊手機(jī)市場,在全球市場已經(jīng)取得了非常亮眼的成績,接下來會進(jìn)一步鞏固和擴(kuò)大這一優(yōu)勢。三星在推出Galaxy Z Flip5和Galax
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時(shí)全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗(yàn)

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項(xiàng)實(shí)用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲大片精品永久免费| 久久久国产精品一区二区中文| 精品999成人| 亚洲第一页中文字幕| 亚洲激情在线激情| 中国女人久久久| 午夜精品久久| 免费日韩av| 欧美日韩综合一区| 国产亚洲成年网址在线观看| 亚洲国产精品久久久久| 中文av一区特黄| 久久久久久夜精品精品免费| 欧美激情第五页| 国产伦一区二区三区色一情| 亚洲激情国产| 欧美一区二区视频免费观看| 欧美精品二区三区四区免费看视频| 国产精品区二区三区日本| 在线 亚洲欧美在线综合一区| 在线亚洲自拍| 美女视频黄免费的久久| 国产精品区免费视频| 亚洲国产成人在线视频| 亚洲一区欧美一区| 另类图片国产| 国产精品综合| 日韩午夜激情电影| 久久久久久久久久码影片| 欧美日韩精选| 伊人久久av导航| 亚洲影院在线观看| 欧美激情一区在线| 国内在线观看一区二区三区| 亚洲视频在线免费观看| 欧美v日韩v国产v| 国产欧美日韩综合一区在线观看| 亚洲精品国产精品国自产在线| 欧美在线不卡| 国产精品久久久久aaaa樱花 | 国产三级精品在线不卡| 亚洲激情av| 久久精品一区二区国产| 国产精品久久久久9999| 亚洲精品一区二区三区蜜桃久| 久久精品女人天堂| 国产精品美女久久久久久久| 日韩午夜黄色| 欧美sm视频| 尤物在线观看一区| 久久成人18免费网站| 欧美私人啪啪vps| 亚洲精品一区中文| 蜜桃av综合| 永久久久久久| 久久亚洲国产成人| 国产亚洲aⅴaaaaaa毛片| 亚洲自拍电影| 欧美亚男人的天堂| 一区二区欧美国产| 欧美精品99| 亚洲国产日韩在线一区模特| 久久久亚洲影院你懂的| 国产日韩欧美综合精品| 亚洲欧美另类中文字幕| 欧美亚洲成人精品| 亚洲视频在线免费观看| 欧美三级网页| 一区二区av在线| 欧美日韩不卡合集视频| 亚洲日本在线观看| 欧美不卡三区| 亚洲欧洲另类| 欧美黄色aa电影| 亚洲人成网站色ww在线| 欧美波霸影院| 亚洲人线精品午夜| 欧美精品导航| 一本久道久久综合婷婷鲸鱼| 欧美日韩在线播| 亚洲视频一区二区免费在线观看| 欧美性色视频在线| 亚洲小说春色综合另类电影| 欧美日韩第一区日日骚| aa亚洲婷婷| 国产精品女同互慰在线看| 亚洲午夜在线观看视频在线| 国产精品久久久久久久久久免费看 | 久久九九免费视频| 国产欧美一区二区三区在线老狼| 亚洲精品你懂的| 欧美福利视频网站| 亚洲激情网址| 欧美伦理在线观看| 日韩视频亚洲视频| 欧美午夜精品一区| 中国成人在线视频| 欧美日本一区| 亚洲一区欧美激情| 国产欧美日本| 久久精品91| 亚洲高清视频在线观看| 欧美啪啪一区| 亚洲欧美日韩在线播放| 国产一区高清视频| 免费中文日韩| 一本综合久久| 国产欧美日本在线| 久久永久免费| 99精品欧美一区二区三区综合在线| 欧美午夜无遮挡| 久久狠狠亚洲综合| 亚洲电影观看| 欧美亚洲不卡| 久久久99国产精品免费| 亚洲国产一区在线| 欧美性jizz18性欧美| 欧美在线黄色| 最新中文字幕一区二区三区| 国产精品国色综合久久| 久久国产视频网站| 91久久夜色精品国产网站| 欧美午夜电影网| 久久精品30| 99re8这里有精品热视频免费| 国产九九视频一区二区三区| 美女999久久久精品视频| 中文在线一区| 激情小说亚洲一区| 欧美日韩色一区| 久久精品国产亚洲一区二区| 91久久极品少妇xxxxⅹ软件| 国产精品久久久久天堂| 麻豆精品精华液| 亚洲在线一区| 136国产福利精品导航网址| 欧美色图天堂网| 久久男女视频| 亚洲一区二区精品在线观看| 精品1区2区3区4区| 国产精品久久7| 欧美成人精品一区二区| 亚洲一级在线观看| 亚洲大胆女人| 国产毛片一区二区| 欧美激情亚洲综合一区| 久久大逼视频| 亚洲视屏一区| 亚洲国产高清自拍| 国产农村妇女毛片精品久久麻豆 | 久久亚洲午夜电影| 亚洲欧美区自拍先锋| 亚洲国产综合在线| 国产亚洲精品久| 欧美四级在线| 欧美高清不卡| 久久精品国产综合| 亚洲自拍16p| 日韩视频三区| 亚洲国产中文字幕在线观看| 国产在线精品成人一区二区三区| 欧美四级伦理在线| 欧美精品日本| 免费日韩精品中文字幕视频在线| 性感少妇一区| 亚洲欧美国产精品专区久久| 99精品国产高清一区二区| 在线精品一区二区| 国产一区二区电影在线观看 | 欧美电影免费观看高清完整版| 久久国产毛片| 性18欧美另类| 亚洲午夜在线| 99re成人精品视频| 亚洲精品国精品久久99热| 在线观看三级视频欧美| 国产一区二区精品| 国产精品网曝门| 国产精品分类| 欧美日韩免费高清一区色橹橹| 欧美日韩mv| 国产日韩在线一区| 国产精品婷婷午夜在线观看| 欧美天堂亚洲电影院在线观看 | 国产视频精品xxxx| 国产精品久久久久久久久婷婷| 欧美三级在线| 欧美日韩国产综合视频在线| 欧美大色视频| 欧美成人精品h版在线观看| 久久综合激情| 久久综合给合久久狠狠狠97色69| 欧美一区二区三区在线播放| 午夜免费久久久久| 亚洲欧美日韩精品久久奇米色影视| 正在播放欧美一区| 亚洲天堂av在线免费| 一区二区三区精品国产| 亚洲最新在线视频| 99精品欧美| 一本久久综合亚洲鲁鲁| 亚洲天堂av在线免费观看| 亚洲少妇在线| 亚洲一区三区电影在线观看|