中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

package.json各個屬性的示例分析

發布時間:2021-06-08 11:42:15 來源:億速云 閱讀:210 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關package.json各個屬性的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是Node.js的模塊(Module)?
在Node.js中,模塊是一個庫或框架,也是一個Node.js項目。Node.js項目遵循模塊化的架構,當我們創建了一個Node.js項目,意味著創建了一個模塊,這個模塊的描述文件,被稱為package.json ——  【長城_changcheng】

一般package.json放置在項目根目錄下,其基本結構如下圖所示:

package.json各個屬性的示例分析

package.json 結構圖

屬性介紹

description

字符串。用來描述當前項目的大致功能。

name

此項目包的名稱。在不確定自己的包名能否使用之前,請先npm registry 一下,看看當前你喜歡的包名是否已經被占用。

version

當前項目包的版本號。每一次項目改動時,在即將發布時,都要同步的去更改項目的版本號。一般格式為:x.y.z。意思是:大版本.中版本.小版本

keywords

放簡介,字符串。方便屌絲們在 npm search中搜索

homepage

項目官網的url

bugs

你項目的提交問題的url和(或)郵件地址。這對遇到問題的屌絲很有幫助。

{ "url" : "http://github.com/owner/project/issues" , "email" : "project@hostname.com" }

你可以指定一個或者指定兩個。如果你只想提供一個url,那就不用對象了,字符串就行。如果提供了url,它會被npm bugs命令使用。

license

你應該要指定一個許可證,讓人知道使用的權利和限制的。最簡單的方法是,假如你用一個像BSD或者MIT這樣通用的許可證,就只需要指定一個許可證的名字,像這樣:

{ "license" : "BSD" }

author

項目作者。可以指定name,email,url字段信息。也可以單獨使用字符串來表示。

{“ author ”: { "name" : "Barney Rubble" , "email" : "b@rubble.com" , "url" : "http://barnyrubble.tumblr.com/" } }

contributors

項目相關貢獻者。是數組。用于羅列對應的貢獻人。可以是單獨的字符串,也可以分別指定name,email,url等屬性。

{"contributors ":[ { "name" : "Barney Rubble" , "email" : "b@rubble.com" , "url" : "http://barnyrubble.tumblr.com/" } ]}

files

files是一個包含項目中的文件的數組。如果命名了一個文件夾,那也會包含文件夾中的文件。(除非被其他條件忽略了)你也可以提供一個.npmignore文件,讓即使被包含在files字段中得文件被留下。其實就像.gitignore一樣。

{ "files": [ "bin/", "templates/", "test/" ]}

main

main字段是一個模塊ID,它是一個指向你程序的主要項目。就是說,如果你包的名字叫foo,然后用戶安裝它,然后require("foo"),然后你的main模塊的exports對象會被返回。這應該是一個相對于根目錄的模塊ID。對于大多數模塊,它是非常有意義的,其他的都沒啥。

{ "main": "bin/index.js"}

bin

很多包都有一個或多個可執行的文件希望被放到PATH中。(實際上,就是這個功能讓npm可執行的)。要用這個功能,給package.json中的bin字段一個命令名到文件位置的map。初始化的時候npm會將他鏈接到prefix/bin(全局初始化)或者./node_modules/.bin/(本地初始化)。

{ "bin" : { "npm" : "./cli.js" } }

當你初始化npm,它會創建一個符號鏈接到cli.js腳本到/usr/local/bin/npm。如果你只有一個可執行文件,并且名字和包名一樣。那么你可以只用一個字符串,比如

{ "name": "my-program" , "version": "1.2.5" , "bin": "./path/to/program" }

// 等價于

{ "name": "my-program" , "version": "1.2.5" , "bin" : { "my-program" : "./path/to/program" } }

man

指定一個單一的文件或者一個文件數組供man程序使用。如果只提供一個單一的文件,那么它初始化后就是man 的結果,而不管實際的文件名是神馬,比如:

{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : "./man/doc.1" }

這樣man foo就可以用到./man/doc.1文件了。

如果文件名不是以包名開頭,那么它會被冠以前綴,下面的:

{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : [ "./man/foo.1", "./man/bar.1" ] }

會為man foo和man foo-bar創建文件。

man文件需要以數字結束,然后可選地壓縮后以.gz為后綴。

{ "name" : "foo" , "version" : "1.2.3" , "description" : "A packaged foo fooer for fooing foos" , "main" : "foo.js" , "man" : [ "./man/foo.1", "./man/foo.2" ] }

會為man foo和man 2 foo創建。

repository

指定你的代碼存放的地方。這個對希望貢獻的人有幫助。如果git倉庫在github上,那么npm docs命令能找到你。

scripts

“scripts”是一個由腳本命令組成的hash對象,他們在包不同的生命周期中被執行。key是生命周期事件,value是要運行的命令。

config

"config" hash可以用來配置用于包腳本中的跨版本參數。在實例中,如果一個包有下面的配置

{ "name" : "foo" , "config" : { "port" : "8080" } }

然后有一個“start”命令引用了npm_package_config_port環境變量,用戶可以通過npm config set foo:port 8001來重寫他。

dependencies

依賴是給一組包名指定版本范圍的一個hash。這個版本范圍是一個由一個或多個空格分隔的字符串。依賴還可以用tarball或者git URL。

請不要將測試或過渡性的依賴放在dependencies。

對于引用包的版本號格式,以下都是合法的:

{ "dependencies" :   { "foo" : "1.0.0 - 2.9999.9999"   , "bar" : ">=1.0.2 <2.1.2"   , "baz" : ">1.0.2 <=2.3.4"   , "boo" : "2.0.1"   , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"   , "asd" : "http://asdf.com/asdf.tar.gz"   , "til" : "~1.2"   , "elf" : "~1.2.3"   , "two" : "2.x"   , "thr" : "3.3.x"  ,"vue":"*", "element-ui":"" } }

devDependencies

如果有人要用你的模塊,但他們可能不需要你開發所使用的外部測試或者文檔框架。在這種情況下,最好將這些附屬的項目列在devDependencies中。這些東西會在根目錄執行npm link或者npm install的時候初始化,并可以像其他npm配置參數一樣管理。

peerDependencies

你的模塊可能要暴露一個特定的接口,并由host文檔來預期和指定。比如:

{   "name": "tea-latte",   "version": "1.3.5"   "peerDependencies": {     "tea": "2.x"   } }

這能保證你的package可以只和tea的2.x版本一起初始化。試圖初始化另一個有會沖突的依賴的插件將導致一個錯誤。因此,確保你的插件的需求約束越弱越好,而不要去把它鎖定到一個特定的版本。此屬性盡量避免使用

bundledDependencies

一組包名,他們會在發布的時候被打包進去

engines

指定項目工作的環境。除非用戶設置engine-strict標記,這個字段只是建議值。

{ "engines" : { "node" : ">=0.10.3 <0.12", "npm" : "~1.0.20" } }

engineStrict

如果你確定你的模塊一定不會運行在你指定版本之外的node或者npm上,你可以在package.json文件中設置"engineStrict":true。它會重寫用戶的engine-strict設置。除非你非常非常確定,否則不要這樣做。如果你的engines hash過度地限制,很可能輕易讓自己陷入窘境。慎重地考慮這個選擇。如果大家濫用它,它會再以后的npm版本中被刪除。

os

可以指定你的模塊要運行在哪些操作系統中

"os" : [ "darwin", "linux" ]

你也可以用黑名單代替白名單,在名字前面加上“!”就可以了:

"os" : [ "!win32" ]

操作系統用process.platform來探測。雖然沒有很好地理由,但它是同時支持黑名單和白名單的。

cpu

如果你的代碼只能運行在特定的cpu架構下,你可以指定一個

"cpu" : [ "x64", "ia32" ]

就像os選項,你也可以黑一個架構:

"cpu" : [ "!arm", "!mips" ]

cpu架構用process.arch探測。

preferGlobal

如果包主要是需要全局安裝的命令行程序,就設置它為true來提供一個warning給只在局部安裝的人。它不會真正的防止用戶在局部安裝,但如果它沒有按預期工作它會幫助防止產生誤會。

{" preferGlobal ":true}

private

如果你設置"private": true,npm就不會發布它。

這是一個防止意外發布私有庫的方式。如果你要確定給定的包是只發布在特定registry(如內部registry)的,用publishConfighash的描述來重寫registry的publish-time配置參數。

publishConfig

這是一個在publish-time使用的配置集合。當你想設置tag或者registry的時候它非常有用,所以你可以確定一個給定的包沒有打上“lastest”的tag或者被默認發布到全局的公開registry。任何配置都可以被重寫,但當然可能只有“tag”和“registry”與發布的意圖有關。

關于“package.json各個屬性的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南木林县| 湟中县| 崇信县| 句容市| 商南县| 临朐县| 大关县| 尼勒克县| 乡城县| 淮阳县| 额济纳旗| 寿阳县| 凤山县| 万载县| 沁水县| 大冶市| 方山县| 桐庐县| 利津县| 古丈县| 佛坪县| 青河县| 和平区| 乌拉特前旗| 新郑市| 井冈山市| 射洪县| 平江县| 巴东县| 灵璧县| 新巴尔虎右旗| 磐安县| 原平市| 囊谦县| 新乡县| 冀州市| 通海县| 潜江市| 肃北| 安顺市| 延寿县|