npm和包、npm下载安装使用包、全局安装包和本地安装包、全局安装nodemon包、开发依赖和生产依赖
npm
● npm 全稱 Node Package Manager(node 包管理器),它的誕生是為了解決 Node 中第三方包共享的問題。
● npm 不需要單獨(dú)安裝。在安裝Node的時候,會連帶自動安裝npm。
● npm -v檢查安裝版本的情況。
當(dāng)我們談到npm時,我們在說兩個東西:
● 命令行工具。這個工具在安裝node時,已經(jīng)自動安裝過了,不需要額外安裝。
● npm網(wǎng)站。這是一個第三方模塊的"不花錢的模塊超市",我們可以自由地下載,上傳模塊。
包(package)與模塊關(guān)系
npm網(wǎng)站上去下載我們的需要的代碼時,它們是以"包"這種結(jié)構(gòu)放在npm網(wǎng)站上的。
● nodejs中一個模塊就是一個單獨(dú)的js文件
● Node.js 中的第三方模塊,又叫做包、第三方包、依賴包
● 包是多個模塊的集合。一個模塊的功能比較單一,所以一個包一般會包含多個模塊。
● npm 管理的單位是包。類似于網(wǎng)站和網(wǎng)頁的區(qū)別:一個網(wǎng)站一般會包含多個網(wǎng)頁。
npm下載使用包
分成三步驟:
● 初始化項(xiàng)目。npm init --yes如果之前已經(jīng)初始化,則可以省略。
● 安裝包。 npm install 包名。[注意:保持聯(lián)網(wǎng)的狀態(tài)哈]
● 引入包,使用
第一步:初始化項(xiàng)目
這里提到的項(xiàng)目并不是某個具體的功能,只是要創(chuàng)建一個空文件夾即可(注意,不要起中文名字哈)。
進(jìn)入到項(xiàng)目所在的根目錄下,啟動小黑窗(建議:按下shift鍵,點(diǎn)擊右鍵,在彈出的菜單中選擇 “在此處打開命令行”)
初始化命令 : npm init --yes
輸入如下命令:
init命令用來在根目錄下生成一個package.json文件,這個文件中記錄了我們當(dāng)前項(xiàng)目的基本信息,它是一切工作的開始。
第二步:安裝包
npm 這個超市中有現(xiàn)成的寫好的代碼,我們想下載來用,這個過程就是安裝包,或者叫下包、裝包
安裝命令 : npm i 包名
第三步:使用包
當(dāng)我們已經(jīng)下載好一個包之后,就可以像使用核心模塊一樣去使用它。
格式是:const 常量名 = require(‘包名’) 這個格式與引入核心模塊的格式是一樣的。
安裝包后的整體目錄結(jié)構(gòu)
project01
├── node_modules # 統(tǒng)一放置下載的包
│ └── dayjs # 某個包
├── xx.js # 業(yè)務(wù)代碼, 引入dayjs來使用
├── package.json # 記錄本項(xiàng)目的信息
└── package-lock.json # 下載包的詳細(xì)信息
下載使用包的細(xì)節(jié)1-package.json
npm init 命令
在某個目錄下開啟小黑窗,輸入如下命令:npm init
它會啟動一個交互式的程序,讓你填入一些關(guān)于本項(xiàng)目的信息,最后生成一個package.json文件。
如果你希望直接采用默認(rèn)信息,可以使用 : npm init --yes或者是 npm init -y
說明:
● 這個命令只需要運(yùn)行一次,它的目的僅僅是生成一個package.json文件。
● 如果項(xiàng)目根目錄下已經(jīng)有了package.json文件,就不需要再去運(yùn)行這個命令了。
● 這個package.json文件后期是可以手動修改的。
package.json文件
它一般是由npm init命令創(chuàng)建出來的(也可以正常被CV),它的整體內(nèi)容是一個json字符串,用來對當(dāng)前項(xiàng)目進(jìn)行整體描述。
其中最外層可以看作是一個js的對象(每一個屬性名都加了"",這就是一個典型的json標(biāo)記)。
這個文件中有非常多的內(nèi)容,我們目前學(xué)習(xí)如下幾個:
● name:表示這個項(xiàng)目的名字。
如是它是一個第三方包的話,它就決定了我們在require()時應(yīng)該要寫什么內(nèi)容。
● version:版本號
● keywords:關(guān)鍵字
● author: 作者
● descrption: 描述
下載使用包的細(xì)節(jié)2-node_modules文件夾
作用
這個文件夾中保存著我們從npm中下載來的第三方包。在使用npm install 命令時,會從npm網(wǎng)站下載對應(yīng)的包到這個文件夾中。
執(zhí)行邏輯
當(dāng)鍵入npm install XXX之后(這里假設(shè)這個XXX包是存在的,也沒有出現(xiàn)任何的網(wǎng)絡(luò)錯誤):
(1) 修改package.json文件。根據(jù)開發(fā)依賴和生產(chǎn)依賴的不同,決定把這句記錄在加在devDependencies或者是dependencies列表中。
(2) 修改node_modules文件夾
a. 如果有node_modules文件夾,則直接在下面新建名為XXX的文件夾,并從npm中下來這個包。如果這個包還有其它的依賴,則也會下載下來。
b. 如果沒有node_modules,則先創(chuàng)建這個文件夾,再去下載相應(yīng)的包
● 建議先用init命令創(chuàng)建package.json之后,再去install
● 在分享代碼時,我們一般不需要把node_modules也給別人,只需要給package.json(就像你不需要把day.js給別人,因?yàn)樗麄兛梢宰约喝ハ螺d)。對方拿到我們的代碼之后,先運(yùn)行npm install(后面不接任何的包名),自己去安裝這些個依賴包。
下載使用包整體回顧
修改鏡像源
下包速度慢的原因:默認(rèn)情況下,npm 從一個名為 https://registry.npmjs.org/ 的服務(wù)器上下包。這個服務(wù)器在國外,因此下包速度會非常慢。
解決方案:把 npm的下包地址,從國外的服務(wù)器切換為國內(nèi)的服務(wù)器。
檢查當(dāng)前的下包地址:
npm config get registry
把下包的地址切換為國內(nèi)的淘寶服務(wù)器
npm config set registry=https://registry.npm.taobao.org/
全局安裝包和本地安裝包
分成兩類:
● 全局安裝: 包被安裝到了系統(tǒng)目錄(一般在系統(tǒng)盤的node_modules中)。
● 局部安裝(或者叫本地安裝),包安裝在當(dāng)前項(xiàng)目的根目錄下(與package.json同級)的node_modules中。
○ 命令:npm install 包名
全局包與本地包的區(qū)別
● 全局安裝的包一般可提供直接執(zhí)行的命令。我們通過對一些工具類的包采用這種方式安裝,如:
gulp, nodemon, live-server,nrm等。
● 本地安裝的包是與具體的項(xiàng)目有關(guān)的, 我們需要在開發(fā)過程中使用這些具體的功能。
一個經(jīng)驗(yàn)法則:
● 要用到該包的命令執(zhí)行任務(wù)的就需要全局安裝
● 要通過require引入使用的就需要本地安裝
全局安裝nodemon包
作用 : 它能幫我們自動檢測到我們的代碼的修改,并自動重新運(yùn)行我們的代碼
安裝 nodemon : 通過npm包管理工具來進(jìn)行安裝。
步驟:
在任意位置 打開一個小黑窗,輸入如下命令:
npm install -g nodemon 回車。
此操作需要聯(lián)網(wǎng),根據(jù)網(wǎng)絡(luò)速度所耗時間不同。如果這個命令執(zhí)行完成并沒有報錯,就是說明安裝成功了。
使用nodemon
等待安裝成功之后,使用方法也非常簡單:在命令中,使用nodemon來代替node。
// 原來是: node server.js// 現(xiàn)在是 // 改成 nodemon server.js nodemon server.js它的好處在于會自動監(jiān)聽server.js這個文件的變化,如果變化了,就會重新自動再去運(yùn)行。相當(dāng)于是如下偽代碼:
while(server.js 變化了){node server.js }說明:
● 它是一個第三方的包(其它程序員寫的工具)
● 之前的node server.js還是可以用的。
可能會出現(xiàn)的錯誤
● 運(yùn)行nodemon,如果報錯如下:
● 解決辦法是:
○ 管理員方式,打開命令行(powershell)窗口
○ 執(zhí)行 set-ExecutionPolicy RemoteSigned;
○ 在出現(xiàn)的選項(xiàng)中,輸入 A,回車。即可
● 如果報錯如下
解決辦法,重啟vscode,win7可能要重啟電腦。
開發(fā)依賴和生產(chǎn)依賴(了解)
在本地安裝包時,表示我們這個項(xiàng)目要用到這個包,換句話說,我們這個項(xiàng)目要想成功運(yùn)行,要依賴于這些個包。
但在,具體在項(xiàng)目進(jìn)行的哪一階段依賴于這些包呢?也有具體的差異。
本地開發(fā) ----> 上線運(yùn)行
理解
舉個生活中建房子的場景:
在建房子時,我們依賴:
● 輔助工具:尺子,水平儀,腳手架
● 原材料:鋼筋,水泥
在住房子時,我們依賴:
● 原材料:鋼筋,水泥
在房子進(jìn)入到了使用階段時,我們就不再需要尺子,水平儀,腳手架等這些個輔助工具了。我們買一所房子時,也不應(yīng)該支付巨型腳手架的費(fèi)用。
在開發(fā)前端項(xiàng)目的過程中也存在類似的問題:我們的開發(fā)過程和使用過程是分開的,開發(fā)項(xiàng)目時需要用到的包可能在使用項(xiàng)目時就不需要用到了。
假設(shè)有這么兩個包:
● gulp-htmlmin。這個工具是用來把html代碼進(jìn)行壓縮的(去掉空格,換行等),我們需要在開發(fā)時使用它,而項(xiàng)目一旦上線,我們就不再需要它了。,因此將它歸類為"開發(fā)依賴"。
● axios。在開發(fā)時參與源碼編寫,在發(fā)布上線的生產(chǎn)環(huán)境中也是需要它的。不僅在開發(fā)環(huán)境編寫代碼時要依賴它、線上環(huán)境也要依賴它,因此將它歸類為"生產(chǎn)依賴"。
總結(jié)
以上是生活随笔為你收集整理的npm和包、npm下载安装使用包、全局安装包和本地安装包、全局安装nodemon包、开发依赖和生产依赖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift 开发的工具类,主要是提供正则
- 下一篇: g4600黑苹果efi_超详细黑苹果安装