基於node工程
-
包(項目,工程)
- 概念
- 1、在Node.js語言中,包和模塊並沒有本質的不同,包是在模塊的基礎上更深一步的抽象。
- 2、包將某個獨立的功能封裝起來,用於發佈、更新、依賴管理和進行版本控制。
- 3、Node.js根據 CommonJS 規範實現了包機制,開發了 npm 來解決包的發佈和獲取需求。
-
包的說明文件(package.json)
- 使用package.json能幹什麼
- 1、相當於你本地項目的一個文檔說明。
- 2、允許你指定你項目中所使用的node包的版本。
- 3、構建你的項目更加容易,便於給其他人共享。
- 使用package.json能幹什麼
-
package.json屬性詳解
- 本質:json對象
{ "name": "npm_command", //包名 "version": "1.0.0", //版本 "scripts": { //配置npm運行命令 "start": "node bin/www" }, "dependencies": {//運行依賴的包 "jquery": "^3.2.1" }, "devDependencies": {//開發依賴的包 "babel": "^6.23.0" } }
- 擴展:
"jquery": "^3.2.1" -----向上的尖括號可以管理二級,三級版本 "jquery": "~3.2.1" -----波浪線可以管理三級版本。
npm簡介(包管理工具)
- 1、Node包管理器(npm)是一個由Node.js官方提供的第三方包管理工具,
- 2、npm是一個完全由JavaScript 實現的命令行工具,通過Node.js執行,因此嚴格來講它不屬於Node.js的一部分。
- 3、在最初的版本中,我們需要在安裝完Node.js以後手動安裝npm,但從Node.js 0.6開始,npm已包含在發行包中了,安裝Node.js時會自動安裝npm。現在的版本大都使用6.0以上。
- NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種:
- 允許用戶從NPM服務器下載別人編寫的第三方包到本地使用。
- 允許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
- 允許用戶將自己編寫的包或命令行程序上傳到NPM服務器供別人使用。
- 查看npm是否安裝成功
$ npm -v
npm命令詳解
- 使用npm命令來下載依賴模塊及對項目包(模塊)進行管理
- 常用命令:
- npm init: 生成package.json
- npm install:用來安裝package.json裏的相關依賴包
- npm install packageName -g(全局安裝packageName)
- npm install packageName --save 安裝包(局部安裝packageName—運行依賴)
- npm install packageName@version --save 安裝指定版本的包(局部安裝)
- npm install packageName --save-dev(局部安裝–開發依賴)
- npm info packageName (顯示包的信息)
- npm rm packageName (移除包)
- npm config get prefix (獲取全局安裝包的所在地址,並且可見對應的cmd命令)
npm link
- link相關文檔
- 背景:我們假設項目是 my-project, 需要用到一個獨立的 my-utils 模塊。新開發或修改的 my-utils 模塊,如何在項目中試驗?
- 發佈一個 beta 版本
- 優點:你高興就好。
- 缺點: 無趣+無趣+無趣,麻煩+麻煩+麻煩。
- 使用相對路徑安裝
$ cd path/to/my-project $ npm install path/to/my-utils
- 優點:簡單明瞭 - 缺點: 調試過程中往往需要微調,此時需要切換到 my-utils 目錄修改,然後反覆重新 install,很麻煩;
- 使用軟鏈
$ cd path/to/my-project/node_modules $ ln -s path/to/my-utils my-utils
- 優點:軟鏈後,兩邊修改直接同步; - 缺點: 指令操作麻煩,不同操作系統語法不一樣;
- 發佈一個 beta 版本
- npm link功能:在本地開發npm模塊的時候,我們可以使用npm link命令,將npm 模塊鏈接到對應的運行項目中去,方便地對模塊進行調試和測試;
- 基本方法
$ cd path/to/my-project
$ npm link path/to/my-utils
- 如果這兩個目錄不在一起,操作方法
$ # 先去到模塊目錄,把它 link 到全局
$ cd path/to/my-utils
$ npm link
$
$ # 再去項目目錄通過包名來 link
$ cd path/to/my-project
$ npm link my-utils
鏡像問題
- 使用npm導致的問題(更多的是針對5.0以下版本)
- 下載慢
- 甚至下載不了
cnpm(淘寶鏡像)
- 將npm上的包同步更新到淘寶鏡像上,目前是每10分鐘同步一次。
- 配置:npm install -g cnpm --registry=https://registry.npm.taobao.org
- 修改倉庫地址爲npm地址:npm config set registry https://registry.npmjs.org/
- 常用命令:使用 cnpm 代替 npm 即可
- 問題:
- 會多下載一些文件/文件夾
- 嚴重者會導致 webstorm 癱瘓,就像帕金森綜合徵
- 解決上述問題的辦法
- 修改 npm 的下載指向地址
- npm config set registry “https://registry.npm.taobao.org”
npm轉換國內鏡像
-
npm是一個很好用的工具,全名是Node Packet Manager,是一個nodejs的包管理工具,但是美中不足的是當我們去安轉包的時候卻發現下載的速度太慢,但是沒關係,還是有方法的就是利用淘寶的國內鏡像,一下是3個設置的方法:
-
鏡像使用方法(三種辦法任意一種都能解決問題,建議使用第三種,將配置寫死,下次用的時候配置還在):
- 1.通過config命令
npm config set registry https://registry.npm.taobao.org npm info underscore (如果上面配置正確這個命令會有字符串response)
- 2.命令行指定
npm --registry https://registry.npm.taobao.org info underscore
- 3.編輯 ~/.npmrc 加入下面內容
registry = https://registry.npm.taobao.org
-
下載vue-cli之後,使用vue提醒vue不是全局變量;
- 解決方法:將vue.cmd的文件找到之後,複製該路徑,添加到環境變量Path中;
##補充擴展
- 2017年5月30日發佈node 8.0,其中自帶的npm也由3.xxx版本升級到5.0
- npm5變化:
- 通過npm下載包的時候多了一個package.lock.json
- package.lock.json可以記錄整個node-modules中文件夾的樹狀結構,再次下載的時候不用先去讀取包與包之間相關依賴
- 大白話:就是記錄包與包之間的關聯(依賴關係)
- 好處:再次npm install下載的時候不用去先讀取依賴可以直接下載,速度較快。
- 可以利用離線緩存,合理的利用了緩存,提高了下載效率
- 在速度上還是和yarn有些差異。
- –save是一個默認屬性,npm install下載包的時候會在package.json裏顯示依賴
- 注意:npm3和npm5並沒有完美對接
- 如果之前的項目是用npm下載的包,當後期用npm下載其他包的時候之前的包的依賴是無法讀取到package.lock.json裏,導致之前的包無法使用,此時需要npm install重新下載。