詳解Nodejs之npm&package.json
一直以來(lái),作為前端開(kāi)發(fā),在公司都是先寫(xiě)好頁(yè)面,然后再跟后端合作,將數(shù)據(jù)填入前端頁(yè)面中,但是偶爾自己閑來(lái)無(wú)事,也會(huì)看一些框架什么的,然后利用框架做個(gè)單頁(yè)面應(yīng)用啊,app什么的,這時(shí)候頁(yè)面的數(shù)據(jù)總是一些假數(shù)據(jù),而關(guān)于數(shù)據(jù)請(qǐng)求的部分就沒(méi)辦法做(因?yàn)闆](méi)有后臺(tái)嘛)。所以我感覺(jué)是時(shí)候?qū)W習(xí)一下node了,這對(duì)于我以后要學(xué)的webpack,前端工程化等也有一定幫助。
作為前端,因?yàn)榻?jīng)常用到gulp,webpack等工具,所以我們最常見(jiàn)到的是npm和package.json,所以先總結(jié)一下它們倆。
npm
初始化
$ npm init or $ npm init --y
在做前端開(kāi)發(fā)的時(shí)候,我們經(jīng)常會(huì)用到構(gòu)建工具,例如gulp,webpack等,為了讓別人也可以參與進(jìn)來(lái),我們需要告訴別人項(xiàng)目有些什么依賴(lài)包,然后讓別人也安裝同樣的依賴(lài)包,而npm init產(chǎn)生的package.json就是用來(lái)記錄我們項(xiàng)目中的依賴(lài)的,同樣的,在做node開(kāi)發(fā)的時(shí)候,也會(huì)用刀依賴(lài)包,同樣需要package.json記錄。
在終端輸入npm init會(huì)詢(xún)問(wèn)package.json的各種信息,從而確認(rèn)。如果全部使用默認(rèn)值,可以直接在終端輸入npm init --y快速生成package.json。
安裝依賴(lài)包
$ npm install <package name> <package name> ... $ npm install <package name> -g $ npm install <package name> --save $ npm install <package name> --save-dev $ npm install <pacakage name> --O //--save-optional -B: --save-bundle -E: --save-exact
npm install <package name> -g 表示全局安裝,需要注意的是全局模式并不是將一個(gè)模塊安裝包安裝為一個(gè)全局包的意思,它并不意味著可以從任何地方通過(guò)require()來(lái)引用,-g的含義是將一個(gè)包安裝為全局可用的可執(zhí)行命令。這意味著,所有通過(guò)-g安裝的包都可以在終端以命令方式運(yùn)行,例如gulp,webpack等。
--save與--save-dev的區(qū)別在于前者是生產(chǎn)環(huán)境中項(xiàng)目運(yùn)行需要的依賴(lài),安裝后被記錄在package.json中的dependencies關(guān)鍵字下;而后者是開(kāi)發(fā)時(shí)候需要的依賴(lài),安裝后被記錄在devDependencies關(guān)鍵字下。
同樣--O/B/E分別會(huì)被記錄到對(duì)應(yīng)的關(guān)鍵字下。
更新依賴(lài)包
$ npm update $ npm update -g $ npm outdated $ npm outdated -g
在項(xiàng)目目錄下運(yùn)行npm update可以升級(jí)項(xiàng)目中所用依賴(lài)到最新版本,而npm update -g則可以升級(jí)全局安裝的依賴(lài)包到最新版。
npm outdated用于檢查模塊是否過(guò)時(shí)并列出。
卸載依賴(lài)
$ npm uninstall <package name> <package name> ... $ npm uninstall <package name> -g $ npm uninstall <package name> --save $ npm uninstall <package name> --save-dev
使用npm uninstall可以卸載依賴(lài),但是卸載后,在package.json中的紀(jì)錄并不會(huì)被刪除,要想在卸載依賴(lài)的同時(shí)刪除在package.json中的紀(jì)錄,需要在卸載的時(shí)候使用安裝時(shí)的所有的選項(xiàng),例如,如果安裝時(shí)候使用了npm install <package name> --save則卸載的時(shí)候,同樣使用npm uninstall <pacakage name> --save,而如果使用了--save-dev,卸載時(shí)候也需要加相同的選項(xiàng)。
使用自定義npm命令
在package.json中,有一個(gè)scripts關(guān)鍵字,只需要在該關(guān)鍵字內(nèi)寫(xiě)入自定義命令以及對(duì)應(yīng)執(zhí)行的實(shí)際命令即可。
"scripts":{
"test": "nonde ./test.js",
"dev": "gulp --gulpfile gulpfile-dev.js",
"build": "gulp --gulpfile gulpfile-build.js"
}
上面的配置中,只要我們?cè)诮K端運(yùn)行npm dev就是運(yùn)行了gulp --gulpfile gulpfile-dev.js,這樣就省去了我們?cè)诮K端輸入很長(zhǎng)的一段命令,非常方便。
其他
npm view <pacakage name>可以查看包的package.json文件,如果只是看包的某個(gè)特性,在后面加上相應(yīng)的key即可,例如npm v zepto version就是查看當(dāng)前安裝的zepto的版本,v是view的簡(jiǎn)寫(xiě)。
npm ls可以分析出當(dāng)前當(dāng)前項(xiàng)目下能夠通過(guò)模塊路徑找到的所有包,并生成依賴(lài)樹(shù)。
npm doc <package name>可以打開(kāi)該依賴(lài)包的官網(wǎng),其實(shí)就是打開(kāi)了package.json中的homepage。
package.json文件
在運(yùn)行npm init后會(huì)生成package.json文件,該文件用于記錄項(xiàng)目中所用到的依賴(lài)以及項(xiàng)目的配置信息(比如名稱(chēng)、版本、許可證等)。npm install命令根據(jù)這個(gè)配置文件自動(dòng)下載項(xiàng)目運(yùn)行和開(kāi)發(fā)所需要的依賴(lài)。
一個(gè)比較完整的package.json文件如下:
{
"name": "project",
"version": "1.0.0",
"author": "張三",
"description": "第一個(gè)node.js程序",
"keywords":["node.js","javascript"],
"repository": {
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
"contributors":[{"name":"李四","email":"lisi@example.com"}],
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "latest",
"mongoose": "~3.8.3"
},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0"
}
}
在package.json中一些關(guān)鍵字的含義:
1.name:包名
2.version:版本號(hào)
3.description:包的描述
4.homepage:包的官網(wǎng)url
5.autor:包的作者名字
6.contributors:包的其他貢獻(xiàn)者
7.dependencies:依賴(lài)包的列表,使用npm install可以安裝依賴(lài)包到node_medule目錄下
8.repository:包代碼存放的地方,可以是git或者svn
9.keywords:關(guān)鍵字
10.scripts:腳本說(shuō)明對(duì)象。它主要被包管理器用來(lái)安裝、編譯、測(cè)試和卸載包,示例如下:
"scripts":{
“install”:"install.js",
"test":"test.js"
}
11.main:模塊引入方法require()在引入包時(shí),會(huì)優(yōu)先檢查這個(gè)字段,并將其作為包中其余模塊的入口,如果該字段不存在,則node會(huì)檢查目錄下的index.js,index.node,index.json作為默認(rèn)入口。
12.devDependencies:一些模塊只在開(kāi)發(fā)時(shí)需要依賴(lài),配置這個(gè)屬性,可以提示包的后續(xù)開(kāi)發(fā)者安裝依賴(lài)包
以上就是關(guān)于node中npm和package.json的總結(jié)。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Node中node_modules文件夾及package.json文件的作用說(shuō)明
- nodejs如何在package.json中設(shè)置多條啟動(dòng)命令
- nodejs require js文件入口,在package.json中指定默認(rèn)入口main方法
- nodejs更新package.json中的dependencies依賴(lài)到最新版本的方法
- nodejs中用npm初始化來(lái)創(chuàng)建package.json的實(shí)例講解
- nodejs npm package.json中文文檔
- node如何將package.json中的包降為低版本或者升級(jí)為高版本
相關(guān)文章
Node.js中的WebSocket底層實(shí)現(xiàn)
WebSockets是基于HTTP的雙向通信協(xié)議,允許客戶(hù)端和服務(wù)器之間實(shí)現(xiàn)實(shí)時(shí)、持久的數(shù)據(jù)交換,本文詳細(xì)介紹了使用JavaScript和Node.js創(chuàng)建WebSockets服務(wù)器和客戶(hù)端的過(guò)程,感興趣的可以了解一下2024-10-10
Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問(wèn)題和解決方案
在使用fs模塊操作文件時(shí),如果提供的操作路徑是以./或../開(kāi)頭的相對(duì)路徑時(shí),很容易出現(xiàn)路徑動(dòng)態(tài)拼接錯(cuò)誤的問(wèn)題,所以本文給大家介紹了Nodejs中fs文件系統(tǒng)模塊的路徑動(dòng)態(tài)拼接的問(wèn)題和解決方案,需要的朋友可以參考下2024-03-03
使用Node.js的readline模塊逐行讀取并解析大文件
在Node.js環(huán)境中處理大文件是一個(gè)常見(jiàn)的需求,尤其是在處理日志文件、數(shù)據(jù)庫(kù)導(dǎo)出、或任何形式的大規(guī)模文本數(shù)據(jù)時(shí),本文將深入探討如何使用Node.js的readline模塊來(lái)實(shí)現(xiàn)這一功能,并討論相關(guān)的性能優(yōu)化和注意事項(xiàng),需要的朋友可以參考下2024-09-09
使用Node.js實(shí)現(xiàn)簡(jiǎn)易MVC框架的方法
下面小編就為大家?guī)?lái)一篇使用Node.js實(shí)現(xiàn)簡(jiǎn)易MVC框架的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
NestJS中集成TypeORM進(jìn)行數(shù)據(jù)庫(kù)操作
本文深入探討了如何在NestJS中集成TypeORM進(jìn)行數(shù)據(jù)庫(kù)操作,包括TypeORM的配置和集成、實(shí)體設(shè)計(jì)和關(guān)系映射、Repository模式的應(yīng)用、事務(wù)處理方案、數(shù)據(jù)庫(kù)遷移管理、性能優(yōu)化策略2024-12-12
node 文件上傳接口的轉(zhuǎn)發(fā)的實(shí)現(xiàn)
這篇文章主要介紹了node 文件上傳接口的轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
詳解NodeJS Https HSM雙向認(rèn)證實(shí)現(xiàn)
這篇文章主要介紹了詳解NodeJS Https HSM雙向認(rèn)證實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03

