歡迎訂閱個人公衆號,微信搜索【 比鄰之地 】我會按期發佈教程,分享軟件,有問題歡迎留言!html
介紹vue
NPM的全稱是Node Package Manager,是隨同NodeJS一塊兒安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包,相似的還有 cnpm、yarn、tyarn ···node
強烈建議安裝 nrm :npm 的源管理器react
切換 npm 鏡像源linux
npm config set registry [這裏是鏡像源 url]
a 官方源git
npm config set registry https://registry.npmjs.org
速度慢能夠,https -> http,這樣網速就會好不少github
npm config set registry http://registry.npmjs.org
b 淘寶源vue-cli
npm config set registry https://registry.npm.taobao.org
c 使用cnpm(用cnpm -v
檢測是否成功)express
npm install -g cnpm --registry=https://registry.npm.taobao.org
d 手動修改設置淘寶源npm
1.打開.npmrc文件(node默認安裝再C盤-C:Program Filesnodejsnode_modulesnpmnpmrc,沒有的話可使用git命令行建一個( touch .npmrc),用cmd命令建會報錯)
2.增長 registry= https://registry.npm.taobao.org 便可。
檢測是否修改爲功,查看當前使用的 npm 鏡像源
npm config get registry or npm info express
顯示進度條
npm config set loglevel=http
node包的安裝分爲全局模式和本地模式:A、通常狀況下會以本地模式運行,包會被安裝到和你的應用程序代碼的本地node_modules> 目錄下。
B、在全局模式下,Node包會被安裝到Node的安裝目錄下的node_modules下。
獲知使用
npm set global=true
來設定安裝模式,npm get global
能夠查看當前使用的安裝模式
如下命令是安裝 package.json 中標記的全部的包,安裝完畢後會產生一個node_modules目錄,其目錄下就是安裝的各個node模塊。
npm install or npm i
安裝指定的依賴包(通常標記在 dependencies 下)
npm install [package_name]
注意:
默認會安裝包的最新版本,也能夠經過在後面加版本號的方式安裝指定版本,如npm install express@3.0.6
項目對模塊的依賴可使用下面的 3種方法來表示(假設當前版本號是 1.1.0 ):
兼容模塊新發布的補丁版本:~1.1.0、1.1.x、1.1
兼容模塊新發布的小版本、補丁版本:^1.1.0、1.x、1
兼容模塊新發布的大版本、小版本、補丁版本:*、x
將包安裝到全局環境中:
npm install [package_name] -g
注意:
在代碼中,直接經過 require() 的方式是沒有辦法調用全局安裝的包的。全局的安裝是供命令行使用的,就好像全局安裝了 vmarket 後,就能夠在命令行中直接運行 vm 命令。
vm 在 linux 系統中的地位相似 windows 中的記事本,但功能要強大的多!
-S / --save
指定的包安裝(多數狀況下會安裝最新版本的包),信息自動更新到 package.json 的 dependencies(生產階段的依賴)中
npm install [package-name] --save or npm i [package-name] -S
-D / --save-dev
指定的包安裝,信息自動更新到 package.json 的 devDependencies(開發階段的依賴)下
npm install [package-name] --save-dev or npm i [package-name] -D
-O / --save-optional
安裝最新版本的包(多數狀況下),安裝包的同時自動更新 package.json 的 optionalDependencies(可選階段的依賴)下
npm install [package-name] --save-optional or npm install [package-name] -O
-E / --save-exact
精確安裝指定模塊版本
npm install [package-name] --save-exact or npm install [package-name] -E
輸入命令
npm install gulp -ES
,注意 package.json 文件的 dependencies 字段,能夠看出版本號中的<font color="red">^</font>消失了"devDependencies": { "gulp": "^3.9.1" }//輸入 npm install gulp -ES 後 "dependencies": { "gulp": "3.9.1" }
查看 node 模塊的 package.json 文件夾
npm view moduleNames
注意:
若是想要查看 package.json 文件夾下某個標籤的內容,可使用npm view moduleName labelName
.
查看當前目錄下已安裝的 node 包(模塊及依賴)
npm list or npm ls / npm ls -g //查看全局安裝的模塊及依賴 aliases: list, la, ll
模塊的依賴都被寫入了 package.json
文件之後,別人打開項目的根目錄(項目開源、內部團隊合做),使用 npm install
命令能夠根據 dependencies
配置安裝全部的依賴包(應當注意 package-lock
或 yarn-lock
的做用)
注意:
Node 模塊搜索是從代碼執行的當前目錄開始的,搜索結果取決於當前使用的目錄中的 node_modules 下的內容。npm list parseable=true
能夠目錄的形式來展示當前安裝的全部包
卸載模塊
npm usinstall [package-name]
aliases
remove, rm, r, un, unlink
卸載模塊,同時刪除模塊留在 package.json 中 dependencies(生產環境) 下的對應信息
npm uninstall [package-name] --save or npm uninstall [package-name] -S
卸載模塊,同時刪除模塊留在 package.json 中 devDependencies(開發環境) 下的對應信息
npm uninstall [package-name] --save-dev or npm uninstall [package-name] -D
移除
npm remove [package-name]
npm init //初始化 or npm init -y //一鍵初始化 aliases[-f|--force|-y|--yes]
執行後會建立一個 package.json 文件(項目的相關信息)
package.json (項目)
{ name : //項目名稱 version: (1.0.0): //版本號 description: //簡介,對項目進行簡介 entry point: //入口文件的名字 test command: //測試命令 git repository: //git倉庫地址 keywords: //關鍵詞 author: //做者 license: (ISC): //協議 dependencies: //寫入依賴(生產環境) devDependencies: //寫入依賴(開發環境) }
npm start [-- <args>]
啓動項目
npm run [項目名稱] // vue npm start // react ······
該命令寫在 package.json 文件 scripts的 start 字段中,能夠自定義命令來配置一個服務器環境和安裝一系列的必要程序,如
"scripts": { "start": "gulp -ws" }此時在cmd中輸入
npm start
命令至關於執行 gulpfile.js 文件自定義的watch
和server
命令。若是 package.json 文件沒有設置 start,則將直接啓動
node server.js
中止模塊
npm stop [-- <args>]
從新啓動模塊
npm restart or npm restart [-- <args>]
npm test 測試模塊
npm test [-- <args>] or npm tst [-- <args>]
該命令寫在 package.json 文件scripts 的 test 字段中,能夠自定義該命令來執行一些操> 做,如
"scripts": { "test": "gulp release" },此時在cmd中輸入
npm test
命令至關於執行 gulpfile.js 文件自定義的 release命令。
npm version [newversion | major patch | preminor | prepatch | from-git] npm [-v | --version] //to print npm version npm view <pkg> version //to view a package's published version npm ls //to inspect current package/dependency versions
查看模塊的註冊信息
npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...] aliases: info, show, v查看包的依賴關係
npm view [package-name] dependencies查看包的源文件地址
npm view [package-name] repository.url查看包所依賴的Node的版本
npm view [package-name] engines查看npm使用的全部文件夾
npm help folders用於更改包內容後進行重建
npm rebuild [package-name]檢查包是否已通過時,此命令會列出全部已通過時的包,能夠及時進行包的更新
npm outdated
發佈一個npm包的時候,須要檢驗某個包名是否已存在
npm search [package-name]
登陸 npm 官網(第一次使用本機登陸,添加用戶)
npm adduser or npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
登陸 npm 官網(登陸過之後,能夠直接值用本命令)
npm login
插件的初始化(一樣是建立 package.json 文件,與項目的 package.json 不一樣,這裏是插件的信息)
npm init //初始化 or npm init -y //一鍵初始化 aliases[-f|--force|-y|--yes]
這裏是插件的package.json的簡單介紹
package.json (插件)
{ "name": "myplugin", //包的名字 要小寫 "version": "1.0.0", //包的版本號。如"1.0.0" "description": "My New Project description.", //description:包的描述信息,將會在npm search的返回結果中顯示,以幫助用戶> 選擇合適的包 "main": "index.js", //main:包的入口文件。 "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, //scripts:經過設置這個可使NPM調用一些命令腳本,封裝一些功能。 "keywords": [ "guangju-test-video" ], //keywords:包的關鍵詞信息,是一個字符串數組,同上也將顯示在npm search的> 結果中 "author": { "name": "Your Name", "email": "you@mail.com" }, //author:包的做者 "license": "MIT", //license:包的開源協議名稱 }
發佈咱們的代碼到 npm 官網
npm publish
注意:
同一個插件,每一次使用該命令必須保證 package.json 的 version 版本有變化才能夠。
在發佈的包上設置訪問級別
npm access public [ ackage] npm access restricted [ package] npm access grant [ read-only|read-write ]scope:team [package] npm access revoke [scope:team] [package] npm access ls-packages [ user | scope | scope:team ] npm access ls-collaborators [ package [ user ]] npm access edit [ package ]
撤銷已經發布的包
取消發佈的整個包,至關於刪除發佈到 npm 的代碼
npm unpublish [package-name] -f若是開啓了
two-factor-authentication(雙重驗證)
須要加上--otp=123456
,123456
是手機端 npm 驗證 app (Authenticator)中獲取的驗證碼。npm unpublish --otp=123456 [package-name] -f撤銷已經發布的具體版本,則可使用:
npm unpublish [package-name]@[version] 例如: npm unpublish [package-name]@1.2.0 // v1.2.0是想要撤銷的版本號同上,若是開啓了
two-factor-authentication(雙重驗證)
須要加上>--otp=123456
。npm unpublish [package-name]@[version] --otp=123456
查看當前登陸的 npm 用戶
npm whoami
查看 npm 配置
npm config ls
npm cache 管理模塊的緩存
npm cache add <tarball file> npm cache add <folder> npm cache add <tarball url> npm cache add <name>@<version> npm cache ls [<path>] npm cache clean [<path>]
最經常使用命令無非清除npm本地緩存
npm cache clean
強制清除緩存(好比安裝 vue-cli 不成功時,清除緩存,再重裝)
npm cache clear --force
安裝指定版本
npm install [package-name]@[version] //例如:npm install vue@2.5.1
查看當前包的安裝路徑
npm root
查看全局的包的安裝路徑
npm root -g
查看npm安裝的版
npm -v or npm --version
更新 npm 到最新版本
npm install npm -g
更新node模塊
npm update [package-name]
npm config 管理npm的配置路徑
npm config set <key> <value> [-g|--global] npm config get <key> npm config delete <key> npm config list npm config edit npm get <key> npm set <key> <value> [-g|--global]
對於config這塊用得最多應該是設置代理,解決npm安裝一些模塊失敗的問題
例如我在公司內網,由於公司的防火牆緣由,沒法完成任何模塊的安裝,這個時候設置代> 理能夠解決npm config set proxy=http://xxx又如國內的網絡環境問題,某官方的IP可能被和諧了,國內搭建了鏡像,此時簡單設置鏡> 像
npm config set registry="http://r.cnpmjs.org"也能夠臨時配置,如安裝淘寶鏡像
npm install -g cnpm --registry=https://registry.npm.taobao.org
查看幫助命令
npm help or npm -h
npm help 查看某條命令的詳細幫助
npm help <term> [<terms..>]
例如輸入npm help install
,系統在默認的瀏覽器或者默認的編輯器中打開本地nodejs安裝包的文件/nodejs/node_modules/npm/html/doc/cli/npm-install.html
npm包是包含了package.json的文件夾,package.json描述了這個文件夾的結構。訪問npm的json文件夾的方法以下,此命令會以默認的方式打開一個網頁,若是更改了默認打開程序則可能不會以網頁的形式打開
npm help json
npm會根據包內容設置一些默認值。
"scripts": {"start": "node server.js"}若是包的根目錄有 server.js 文件,npm 會默認將
start
命令設置爲node server.js
。"scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}若是包的根目錄有 wscript 文件,npm 會默認將
preinstall
命令用node-waf
進行編譯。"scripts":{"preinstall": "node-gyp rebuild"}若是包的根目錄有
binding.gyp
文件,npm 會默認將preinstall
命令用node-gyp
進行編譯。"contributors": [...]若是包的根目錄有 AUTHORS 文件,npm 會默認逐行按
Name <email> (url)
格式處理,郵箱和 url 是可選的。#
號和空格開頭的行會被忽略。
在 package.json 中最重要的就是 name 和 version 字段。他們都是必須的,若是沒有就沒法 install
。name 和 version 一塊兒組成的標識在假設中是惟一的。改變包應該同時改變version。
name是這個東西的名字。注意:
- 不要把 node 或者 js 放在名字中。由於你寫了 package.json 它就被假定成爲了js,不過> 你能夠用 "engine" 字段指定一個引擎(見後文)。
- 這個名字會做爲在 URL 的一部分、命令行的參數或者文件夾的名字。任何
non-url-safe
的字符都是不能用的。- 這個名字可能會做爲參數被傳入
require()
,因此它應該比較短,但也要意義清晰。- 在你愛上你的名字以前,你可能要去
npm registry
查看一下這個名字是否已經被使用了。npm 官網
version 必須能被 node-semver 解析,它被包在npm的依賴中。(要本身用能夠執行 npm install semver
)
可用的「數字」或者「範圍」見 npm 官網.
放簡介,字符串,方便在 npm search
中搜索
關鍵字,數組、字符串,方便在 npm search
中搜索
你項目的提交問題的 url 和(或)郵件地址
{ "url" : "http://github.com/owner/project/issues", "email" : "project@hostname.com" }
你應該要指定一個許可證,讓人知道使用的權利和限制的。
最簡單的方法是,假如你用一個像 BSD 或者 MIT 這樣通用的許可證,就只須要指定一個許可證的名字,像這樣:
{ "license" : "BSD" }
若是你又更復雜的許可條件,或者想要提供給更多地細節,能夠這樣:
"licenses" : [ { "type" : "MyLicense" , "url" : "http://github.com/owner/project/path/to/license" } ]
指定你的代碼存放的地方。這個對但願貢獻的人有幫助。若是 git 倉庫在 github 上,那麼 npm docs
命令能找到你。
這樣作:
"repository" : { "type" : "git" , "url" : "http://github.com/isaacs/npm.git" } "repository" : { "type" : "svn" , "url" : "http://v8.googlecode.com/svn/trunk/" }
URL 應該是公開的(即使是隻讀的)能直接被未通過修改的版本控制程序處理的 url。不該該是一個 html 的項目頁面。由於它是給計算機看的。
scripts
是一個由腳本命令組成的 hash 對象,他們在包不一樣的生命週期中被執行。key是生命週期事件,value 是要運行的命令。
參考上面的 npm start
、npm test
命令
更多詳細請看 npm-scripts官網
"config" hash 能夠用來配置用於包腳本中的跨版本參數。在實例中,若是一個包有下面的配置:
{ "name" : "foo", "config" : { "port" : "8080" } }
而後有一個 start
命令引用了 npm_package_config_port
環境變量,用戶能夠經過npm config set foo:port 8001
來重寫他。
參見 npm 官網。
依賴是給一組包名指定版本範圍的一個 hash。這個版本範圍是一個由一個或多個空格分隔的字符串。依賴還能夠用 tarball 或者 git URL。
請不要將測試或過渡性的依賴放在 dependencieshash 中。見下文的 devDependencies
version 必須徹底和version一致 >version 必須比version大 >=version 同上 <version 同上 <=version 同上 ~version 大約同樣 1.2.x 1.2.0, 1.2.1, 等,但不包括1.3.0 http://... 見下文'依賴URL' * 全部 "" 空,同* version1 - version2 同 >=version1 <=version2. range1 || range2 二選一。 git... 見下文'依賴Git URL' user/repo 見下文'GitHub URLs'
好比下面都是合法的:
{ "dependencies" : { "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "elf" : "~1.2.3" , "two" : "2.x" , "thr" : "3.3.x" } }
若是有人要使用你的模塊,那麼他們可能不須要你開發使用的外部測試或者文檔框架。
在這種狀況下,最好將這些附屬的項目列在 devDependencies 中。
這些東西會在執行 npm link
或者 npm install
的時候初始化,並能夠像其餘 npm 配置參數同樣管理。
對於非特定平臺的構建步驟,好比須要編譯 CoffeeScript ,能夠用 prepublish 腳本去實現,並把它依賴的包放在 devDependency 中。(注:prepublish 定義了在執行 npm publish
的時候先行執行的腳本)
好比:
{ "name": "ethopia-waza", "description": "a delightfully fruity coffee varietal", "version": "1.2.3", "devDependencies": { "coffee-script": "~1.6.3" }, "scripts": { "prepublish": "coffee -o lib/ -c src/waza.coffee" }, "main": "lib/waza.js" }
prepublish 腳本會在 publishing 前運行,這樣用戶就不用本身去 require 來編譯就能使用。而且在開發模式中(好比本地運行 npm install
)會運行這個腳本以便更好地測試。
參考其餘資料:
https://github.com/ericdum/mu...
https://segmentfault.com/a/11...
(完)
歡迎訂閱個人公衆號,微信搜索【 比鄰之地 】我會按期發佈教程,分享軟件,有問題歡迎留言!