使用NPM

Nodejs生態圈很強大,第一個原因就是NPM,因爲全球有無數的程序員在NPM中貢獻了自己的力量。

爲了避免造輪子,我們有時候會用到其他人的勞動成果,比如一些優秀的框架,比如Express,我們直接使用NPM下載下來就可以用了,降低開發成本和時間。

安裝

安裝好nodejs後就安裝好了npm,這時系統自帶npm命令

如何使用

以爲Express來舉例。
npm 的官網可以找到 npm 包。
https://www.npmjs.com/
例如搜索Express,就會告訴你安裝方法和使用方法:
clipboard.png

安裝Express

新建一個文件夾,然後運行:
npm init初始化,一直按回車,它會自動生成package.json 文件,這個後面再說這個文件的作用。
然後
npm install express安裝

會出現node_modules文件夾
clipboard.png

node_modules文件夾就是所有包安裝的位置。
express已經安裝到了node_modules文件夾,其他的很多文件都是這個express依賴的包

package.json 文件

我們寫一個項目的時候可能會用到很多很多包,這些包可能是一些工具,也可能是框架。我們每使用一個包,就會把這些包下載下來,然後他會放到node_modules目錄中。
那麼項目如果太大,哪些包安裝了哪些沒安裝,我們如何知道呢?有沒有一個機制來記住我們安裝的包呢?
有,nodejs提供了一個機制叫package.json
他是一個文件,他可以記住所有安裝的包的信息,包括名稱、版本信息。
如果我們遷移項目,我們就能夠知道安裝了什麼包。因爲node_modules目錄中文件比較大,而且不放在版本控制中(github等),也不是源碼的一部分,我們只要知道node_modules裏安裝的一些包的名字就可以了,根本不需要這個目錄的內容。

比如說現在一個同事得到了這一份代碼,那麼這個node_modules目錄中的代碼他是不需要的。因爲他只需要安裝過得這些包的名稱就可以了,到他自己的電腦上再安裝就可以了。

package.json就是記錄所有安裝的包的信息的文件。

生成方法

運行npm init初始化一個項目。
他會讓你回答一些關於這個項目的信息,一直按回車,因爲這些信息後面可以改,最開始使用默認的就好。

clipboard.png

然後就會生成一個package.json的文件。

clipboard.png

舉例:嘗試安裝Express並查看package.json

npm install --save express

clipboard.png

安裝之後出現很多包,這些都是express依賴的包。

"dependencies"

clipboard.png

安裝後出dependencies字段會出現安裝的包的詳細信息,包括包的名稱和版本號。
"dependencies"中文是依賴的意思。

"devDependencies"

devDependencies是開發環境依賴的意思。例如我們用下面的命令行安裝gulp
npm install --save-dev gulp

clipboard.png

開發環境的包會記錄在這裏
使用--save-dev就是開發環境依賴的一些包,會記錄到devDependencies

"scripts"中的"start"

在"scripts"里加入一行"start": "node app.js",

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },

那麼如果我們運行npm run start

clipboard.png

就會運行"start"裏面的命令。

作用:別人下載你的代碼之後可能不知道怎麼運行你的項目,那麼你把這些命令寫在start裏,那麼項目入口文件之類的就一目瞭然。

使用package.json 命令:npm install

package.json記錄了安裝包的所有安裝信息,那麼別人得到這些信息如何把這些包安裝下來呢(安裝到他的本地
使用命令npm install就可以了,比如我們現在刪掉node_modules,然後再運行npm install
他就會重新安裝

"dependencies": {
    "express": "^4.16.4"
  },
  "devDependencies": {
    "gulp": "^3.9.1"
  }

這兩個依賴中的包

全局安裝與局部安裝的區別

全局安裝

比如我們安裝webpack
npm install -g webpack
-g 意思是Global,全局的意思,他會把webpack作爲一個命令,一個可執行文件,安裝到我們的系統中,以後我們就可以使用這個命令了
clipboard.png

局部安裝

局部安裝只安裝到這個項目當前的文件夾中,如果想使用webpack命令,就要運行使用當前項目下的文件,才能運行webpack
node_modules/.bin/webpack

切換淘寶源

注意:在國內安裝這些包的時候有時候會很慢,因爲這些包的服務器在國外。我們可以換一個源,即把服務器換到國內,例如淘寶的源

運行下面的命令即可切換淘寶源

npm config set registry https://registry.npm.taobao.org/
npm config set loglevel http
npm config set progress false

npm 的配置被存儲在 ~/.npmrc,你可以隨時改。

這是官方網站
https://npm.taobao.org/

安裝node-sass的正確姿勢

安裝node-sass的正確姿勢

從 npm 到全面擁抱 yarn

從 npm 到全面擁抱 yarn

個人覺得 yarn 有以下好處:

  1. 超快的下載速度。
  2. 離線下載,如果你懂 ruby,這個有點像 bundle,就是之前下載過一次,這個包就會放到電腦上的一個地方,下次別的項目要使用同一個包的時候就不用下載了,而是做一個鏈接,這樣速度超級快,這一點很重要,npm 飽受詬病的一點就是,每次安裝依賴,都需要從網絡下載一大堆東西,而且是全部重新下載。工程多的時候比較煩人。這下子可以節約大量時間了。
  3. 擁有 lockfile 文件,在 yarn 中叫 yarn.lock,這個在新版的 npm 也有這個功能,它的文件名叫 package-lock.json,這個文件會記錄每次安裝的包的版本的精確信息,這樣,每次運行 yarn install 就會得到一模一樣的依賴環境,而不是會出現個別包的版本不同,從而引發環境問題導致項目運行情況不同的尷尬事件。

安裝方法、使用方法、切換源等見鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章