詳解Nodejs之npm&package.json,nodejsnpm

來源:互聯網
上載者:User

詳解Nodejs之npm&package.json,nodejsnpm

一直以來,作為前端開發,在公司都是先寫好頁面,然後再跟後端合作,將資料填入前端頁面中,但是偶爾自己閑來無事,也會看一些架構什麼的,然後利用架構做個單頁面應用啊,app什麼的,這時候頁面的資料總是一些假資料,而關於資料請求的部分就沒辦法做(因為沒有後台嘛)。所以我感覺是時候學習一下node了,這對於我以後要學的webpack,前端工程化等也有一定協助。
作為前端,因為經常用到gulp,webpack等工具,所以我們最常見到的是npm和package.json,所以先總結一下它們倆。

npm

初始化

$ npm initor$ npm init --y 

在做前端開發的時候,我們經常會用到構建工具,例如gulp,webpack等,為了讓別人也可以參與進來,我們需要告訴別人項目有些什麼依賴包,然後讓別人也安裝同樣的依賴包,而npm init產生的package.json就是用來記錄我們項目中的依賴的,同樣的,在做node開發的時候,也會用刀依賴包,同樣需要package.json記錄。

在終端輸入npm init會詢問package.json的各種資訊,從而確認。如果全部使用預設值,可以直接在終端輸入npm init --y快速產生package.json。

安裝依賴包

$ 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 表示全域安裝,需要注意的是全域模式並不是將一個模組安裝包安裝為一個全域包的意思,它並不意味著可以從任何地方通過require()來引用,-g的含義是將一個包安裝為全域可用的可執行命令。這意味著,所有通過-g安裝的包都可以在終端以命令方式運行,例如gulp,webpack等。

--save與--save-dev的區別在於前者是生產環境中項目運行需要的依賴,安裝後被記錄在package.json中的dependencies關鍵字下;而後者是開發時候需要的依賴,安裝後被記錄在devDependencies關鍵字下。

同樣--O/B/E分別會被記錄到對應的關鍵字下。

更新依賴包

$ npm update$ npm update -g$ npm outdated$ npm outdated -g

在項目目錄下運行npm update可以升級項目中所用依賴到最新版本,而npm update -g則可以升級全域安裝的依賴包到最新版。

npm outdated用於檢查模組是否過時並列出。

卸載依賴

$ npm uninstall <package name> <package name> ...$ npm uninstall <package name> -g$ npm uninstall <package name> --save$ npm uninstall <package name> --save-dev

使用npm uninstall可以卸載依賴,但是卸載後,在package.json中的紀錄並不會被刪除,要想在卸載依賴的同時刪除在package.json中的紀錄,需要在卸載的時候使用安裝時的所有的選項,例如,如果安裝時候使用了npm install <package name> --save則卸載的時候,同樣使用npm uninstall <pacakage name> --save,而如果使用了--save-dev,卸載時候也需要加相同的選項。

使用自訂npm命令

在package.json中,有一個scripts關鍵字,只需要在該關鍵字內寫入自訂命令以及對應執行的實際命令即可。

"scripts":{  "test": "nonde ./test.js",  "dev": "gulp --gulpfile gulpfile-dev.js",  "build": "gulp --gulpfile gulpfile-build.js"}

上面的配置中,只要我們在終端運行npm dev就是運行了gulp --gulpfile gulpfile-dev.js,這樣就省去了我們在終端輸入很長的一段命令,非常方便。

其他

npm view <pacakage name>可以查看包的package.json檔案,如果只是看包的某個特性,在後面加上相應的key即可,例如npm v zepto version就是查看當前安裝的zepto的版本,v是view的簡寫。

npm ls可以分析出當前當前項目下能夠通過模組路徑找到的所有包,並產生依賴樹。

npm doc <package name>可以開啟該依賴包的官網,其實就是開啟了package.json中的homepage。

package.json檔案

在運行npm init後會產生package.json檔案,該檔案用於記錄項目中所用到的依賴以及項目的配置資訊(比如名稱、版本、許可證等)。npm install命令根據這個設定檔自動下載項目運行和開發所需要的依賴。

一個比較完整的package.json檔案如下:

{  "name": "project",  "version": "1.0.0",  "author": "張三",  "description": "第一個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中一些關鍵字的含義:

1.name:包名

2.version:版本號碼

3.description:包的描述

4.homepage:包的官網url

5.autor:包的作者名字

6.contributors:包的其他貢獻者

7.dependencies:依賴包的列表,使用npm install可以安裝依賴包到node_medule目錄下

8.repository:包代碼存放的地方,可以是git或者svn

9.keywords:關鍵字

10.scripts:指令碼說明對象。它主要被包管理器用來安裝、編譯、測試和卸載包,樣本如下:

"scripts":{  “install”:"install.js",  "test":"test.js"}

11.main:模組引入方法require()在引入包時,會優先檢查這個欄位,並將其作為包中其餘模組的入口,如果該欄位不存在,則node會檢查目錄下的index.js,index.node,index.json作為預設入口。

12.devDependencies:一些模組只在開發時需要依賴,配置這個屬性,可以提示包的後續開發人員安裝依賴包

以上就是關於node中npm和package.json的總結。希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.