首頁  >  文章  >  web前端  >  Nodejs中npm&package.json的介紹

Nodejs中npm&package.json的介紹

零下一度
零下一度原創
2017-06-17 10:38:481232瀏覽

本篇文章主要介紹了詳解Nodejs之npm&package.json,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

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

npm

#初始化


$ npm init
or
$ 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 acab04e509e5b64e7e2bc0d60ab53414 -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 acab04e509e5b64e7e2bc0d60ab53414 --save則卸載的時候,同樣使用npm uninstall a57d0322de109e503dba2a67e33c825b --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 a57d0322de109e503dba2a67e33c825b可以查看套件的package.json文件,如果只是看套件的某個特性,在後面加上對應的key即可,例如npm v zepto version就是查看目前安裝的zepto的版本,v是view的簡寫。

npm ls可以分析出目前目前專案下能夠透過模組路徑找到的所有套件,並產生依賴樹。

npm doc acab04e509e5b64e7e2bc0d60ab53414可以開啟該依賴套件的官網,其實就是開啟了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:一些模块只在开发时需要依赖,配置这个属性,可以提示包的后续开发者安装依赖包

以上是Nodejs中npm&package.json的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn