一、什麼是npmhtml
Npm(Node Package Manager) 是node的包管理工具,每一個包都是一個模塊,因此也能夠說npm是node的模塊管理工具。vue
二、下載html5
淘寶鏡像地址:http://npm.taobao.org/node
三、複製文件存放路徑jquery
四、配置變量webpack
系統屬性 - 高級 - 環境變量 - Pathweb
五、npm安裝完成npm
六、安裝cnpmjson
npm install -g cnpm --registry=https://registry.npm.taobao.org
babel安裝完後查看版本
cnpm -v
成功後會有版本信息返回
七、永久替換爲cnpm
npm config set registry https://registry.npm.taobao.org
切換爲npm
npm config set registry https://registry.npmjs.org
Cnpm 支持 npm 除了 publish 以外的全部命令,使用時只要在npm前面加上一個c便可,其餘不變。
八、更新cnpm或npm
cnpm update -g
九、使用npm/cnpm安裝包的兩種方式
本地安裝
cnpm install(i)
模塊名
如cnpm install jquery, install能夠縮寫爲i
本地安裝安裝完畢後會產生一個node_modules目錄,其目錄下就是安裝的各個node模塊,供項目require()進行使用。
安裝模塊如不指定版本號 默認會安裝最新的版本,
全局安裝
cnpm install jquery -g
在全局模式下,Node包會被安裝到Node的安裝目錄下的node_modules下。全局的安裝是供命令行使用的。
安裝指定版本
npm install sax@0.1.1
若是想要安裝指定版本,能夠在庫名稱後加 @版本號:
卸載包
npm uninstall moudleName
【須要一個package.json文件】
更新包
npm update moudleName
【須要一個package.json文件】
其餘命令
查看包地址
npm view moduleName repository.url
查看幫助信息
npm help
發佈一個npm包的時候,須要檢驗某個包名是否已存在
npm search packageName
十、Package.json
package.json是一個描述文件,描述了你項目中各個包之間的關係
一個 package.json 文件能夠有如下幾點做用:
做爲一個描述文件,描述了你的項目依賴哪些包
容許咱們使用 「語義化版本規則」(後面介紹)指明你項目依賴包的版本
讓你的構建更好地與其餘開發者分享,便於重複使用
package.json如何建立
使用 npm init 便可在當前目錄建立一個 package.json 文件:
輸入 npm init 後會彈出一堆問題,咱們能夠輸入對應內容,也可使用默認值。在回答一堆問題後輸入 yes就會生成 package.json 文件。
若是嫌回答這一大堆問題麻煩,能夠直接輸入 npm init --yes 跳過回答問題步驟,直接生成默認值的 package.json 文件
package.json內容
package.json 文件至少要有兩部份內容:
「name」
· 所有小寫,沒有空格,可使用下劃線或者橫線
「version」
· x.x.x 的格式
· 符合「語義化版本規則」
好比:
{ "name":"shixinzhang-demo-package"},"version:"1.0.0"
description:描述信息,有助於搜索
main: 入口文件,通常都是 index.js
scripts:支持的腳本,默認是一個空的 test
keywords:關鍵字,有助於在人們使用 npm search 搜索時發現你的項目
author:做者信息
license:默認是 MIT/ISC
bugs:當前項目的一些錯誤信息,若是有的話
咱們能夠爲 init 命令設置一些默認值,好比:
npm set init.author.email "shixinzhang2016@gmail.com"
npm set init.author.name "shixinzhang"
npm set init.license "MIT"
注意: 若是 package.json 中沒有 description 信息,npm 使用項目中的 README.md 的第一行做爲描述信息。這個描述信息有助於別人搜索你的項目,所以建議好好寫 description 信息。
十一、指定依賴的包
咱們須要在 package.json 文件中指定項目依賴的包,這樣別人在拿到這個項目時纔可使用 npm install 下載。
包有兩種依賴方式:
dependencies:在生產環境中須要用到的依賴
devDependencies:在開發、測試環境中用到的依賴
舉個例子:
{
"name": "my-weex-demo",
"version": "1.0.0",
"description": "a weex project",
"main": "index.js",
"scripts": {
"build": "weex-builder src dist",
"build_plugin": "webpack --config ./tools/webpack.config.plugin.js --color",
"dev": "weex-builder src dist -w",
"serve": "serve -p 8080"
},
"keywords": [
"weex"
],
"author": "fkysly@gmail.com",
"license": "MIT",
"devDependencies": {
"babel-core": "^6.14.0",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.18.0",
"vue-loader": "^10.0.2",
"eslint": "^3.5.0",
"serve": "^1.4.0",
"webpack": "^1.13.2",
"weex-loader": "^0.3.3",
"weex-builder": "^0.2.6"
},
"dependencies": {
"weex-html5": "^0.3.2",
"weex-components": "*"
}}
十二、語義化版本規則
https://docs.npmjs.com/getting-started/semantic-versioning
dependencies 的內容,以 "weex-html5": "^0.3.2" 爲例,咱們知道 key 是依賴的包名稱,value 是這個包的版本。那版本前面的 ^ 或者版本直接是一個 * 是什麼意思呢?
這就是 npm 的 「Semantic versioning」,簡稱」Semver」,中文含義即「語義化版本規則」。
在安卓開發中咱們有過這樣的經驗:有時候依賴的包升級後大改版,以前提供的接口不見了,這對使用者的項目可能形成極大的影響。
所以咱們在聲明對某個包的依賴時須要指明是否容許 update 到新版本,什麼狀況下容許更新。
這就須要先了解 npm 包提供者應該注意的版本號規範。
若是一個項目打算與別人分享,應該從 1.0.0 版本開始。之後要升級版本應該遵循如下標準:
補丁版本:解決了 Bug 或者一些較小的更改,增長最後一位數字,好比 1.0.1
小版本:增長了新特性,同時不會影響以前的版本,增長中間一位數字,好比 1.1.0
大版本:大改版,沒法兼容以前的,增長第一位數字,好比 2.0.0
瞭解了提供者的版本規範後, npm 包使用者就能夠針對本身的須要填寫依賴包的版本規則。
小結一下:總共三種版本變化類型,接受依賴包哪一種類型的更新,就把版本號準確寫到前一位。
十二、根據package.json安裝依賴包
npm install 默認會安裝 package.json 中 dependencies 和 devDependencies 裏的全部模塊。
若是想只安裝 dependencies 中的內容,可使用 --production 字段:
npm install --production
安裝參數 --save(-S) 和 --save-dev(-D)
npm install <package_name> --save
使用下載好的包
下載後 node_modules 文件夾中有要使用的包,咱們就可使用其中的代碼了。
好比在 Node.js 項目中,咱們能夠用 require(XXX) 引入它。
1三、如何建立本身的包並進行發佈
第一次發佈
npm adduser
提示輸入帳號,密碼和郵箱,而後將提示建立成功
非第一次發佈
npm login
而後輸入你建立的帳號和密碼,和郵箱,登錄
【注意】npm adduser成功的時候默認你已經登錄了,因此不須要再接着npm login
1四、如何撤銷本身發佈的包
這裏要說一點,取消發佈包可能並不像你想象得那麼容易,這種操做是受到諸多限制的,撤銷發佈的包被認爲是一種很差的行爲
(試想一下你撤銷了發佈的包[假設它已經在社區內有了必定程度的影響],這對那些已經深度使用並依賴你發佈的包的團隊是件多麼崩潰的事情!)
示例:
我如今將以前發佈的包penghuwanapp撤銷掉:輸入npm unpublish 包名
【吐槽】注意看紅框框住的字,你就知道npm官方撤銷已發佈的包對這種行爲的態度了....
【注意】若是報權限方面的錯,加上--force
可參考地址:http://www.javashuo.com/article/p-blhgnlaa-cg.html
1根據規範,只有在發包的24小時內才容許撤銷發佈的包( unpublish is only allowed with versions published in the last 24 hours)
2即便你撤銷了發佈的包,發包的時候也不能再和被撤銷的包的名稱和版本重複了(即不能名稱相同,版本相同,由於這二者構成的惟一標識已經被「佔用」了)
例如我在撤銷包後嘗試再發布同一名稱+同一版本的包:
報錯,並建議我修改包的版本
npm unpublish的推薦替代命令:npm deprecate <pkg>[@<version>] <message>
使用這個命令,並不會在社區裏撤銷你已有的包,但會在任何人嘗試安裝這個包的時候獲得警告
例如:npm deprecate penghuwanapp '這個包我已經再也不維護了喲~'
1四、npm更新發布後的包
事實上npm更新包和發佈包的命令是同樣的,都是npm publish,不一樣之處在於,你須要修改包的版本
因此步驟是:
1.修改包的版本(package.json裏的version字段)
2.npm publish
關於修改版本的細節請看下面:
1五、查看npm的配置
npm config list //查看基本配置
npm config list -l //查看全部配置
npm本地安裝與全局安裝有什麼區別?
npm install grunt
// 本地安裝,則是將模塊下載到當前命令行所在目錄。 npm install -g grunt
//全局安裝,模塊將被下載安裝到【全局目錄】中;
npm如何獲取全局安裝的默認目錄?
npm config get prefix
npm如何設置全局安裝的默認目錄?
npm config set prefix 「directory」