Npm經常使用命令

歡迎訂閱個人公衆號,微信搜索【 比鄰之地 】我會按期發佈教程,分享軟件,有問題歡迎留言!html

介紹vue

NPM的全稱是Node Package Manager,是隨同NodeJS一塊兒安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包,相似的還有 cnpm、yarn、tyarn ···node

1. 切換淘寶源、官方源

強烈建議安裝 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

2. 用npm安裝依賴包

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-lockyarn-lock 的做用)

注意:
Node 模塊搜索是從代碼執行的當前目錄開始的,搜索結果取決於當前使用的目錄中的 node_modules 下的內容。npm list parseable=true 能夠目錄的形式來展示當前安裝的全部包

3. 卸載安裝的包

卸載模塊

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]

4. 項目的初始化和一鍵初始化

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: //寫入依賴(開發環境)
}

5. npm start 啓動模塊(項目運行)

npm start [-- <args>]

啓動項目

npm run [項目名稱]   // vue

npm start           // react

  ······

該命令寫在 package.json 文件 scripts的 start 字段中,能夠自定義命令來配置一個服務器環境和安裝一系列的必要程序,如

"scripts": {
    "start": "gulp -ws"
}

此時在cmd中輸入 npm start 命令至關於執行 gulpfile.js 文件自定義的 watchserver 命令。

若是 package.json 文件沒有設置 start,則將直接啓動 node server.js

6. 中止、重啓、測試模塊

中止模塊

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命令。

7. 查看模塊的版本

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

8. npm 插件部署到npm官網

發佈一個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

9. 清除緩存

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

10. npm 更新和設置其餘命令

安裝指定版本

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

11. 幫助命令

查看幫助命令

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

更多命令

附:package.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 是可選的。# 號和空格開頭的行會被忽略。

  • name

在 package.json 中最重要的就是 name 和 version 字段。他們都是必須的,若是沒有就沒法 install 。name 和 version 一塊兒組成的標識在假設中是惟一的。改變包應該同時改變version。

name是這個東西的名字。注意:

  • 不要把 node 或者 js 放在名字中。由於你寫了 package.json 它就被假定成爲了js,不過> 你能夠用 "engine" 字段指定一個引擎(見後文)。
  • 這個名字會做爲在 URL 的一部分、命令行的參數或者文件夾的名字。任何non-url-safe的字符都是不能用的。
  • 這個名字可能會做爲參數被傳入 require(),因此它應該比較短,但也要意義清晰。
  • 在你愛上你的名字以前,你可能要去 npm registry 查看一下這個名字是否已經被使用了。npm 官網
  • version

version 必須能被 node-semver 解析,它被包在npm的依賴中。(要本身用能夠執行 npm install semver

可用的「數字」或者「範圍」見 npm 官網.

  • description

放簡介,字符串,方便在 npm search 中搜索

  • keywords

關鍵字,數組、字符串,方便在 npm search 中搜索

  • bugs

你項目的提交問題的 url 和(或)郵件地址

{
 "url" : "http://github.com/owner/project/issues",
"email" : "project@hostname.com"
}
  • license

你應該要指定一個許可證,讓人知道使用的權利和限制的。

最簡單的方法是,假如你用一個像 BSD 或者 MIT 這樣通用的許可證,就只須要指定一個許可證的名字,像這樣:

{ "license" : "BSD" }

若是你又更復雜的許可條件,或者想要提供給更多地細節,能夠這樣:

"licenses" : [
  { "type" : "MyLicense"
  , "url" : "http://github.com/owner/project/path/to/license"
  }
]
  • repository

指定你的代碼存放的地方。這個對但願貢獻的人有幫助。若是 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

scripts 是一個由腳本命令組成的 hash 對象,他們在包不一樣的生命週期中被執行。key是生命週期事件,value 是要運行的命令。

參考上面的 npm startnpm test 命令

更多詳細請看 npm-scripts官網

  • config

"config" hash 能夠用來配置用於包腳本中的跨版本參數。在實例中,若是一個包有下面的配置:

{
 "name" : "foo",
 "config" : { "port" : "8080" }
}

而後有一個 start 命令引用了 npm_package_config_port 環境變量,用戶能夠經過npm config set foo:port 8001 來重寫他。

參見 npm 官網

  • dependencies

依賴是給一組包名指定版本範圍的一個 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

若是有人要使用你的模塊,那麼他們可能不須要你開發使用的外部測試或者文檔框架。

在這種狀況下,最好將這些附屬的項目列在 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://docs.npmjs.com/#cli

https://github.com/ericdum/mu...

https://segmentfault.com/a/11...

(完)

歡迎訂閱個人公衆號,微信搜索【 比鄰之地 】我會按期發佈教程,分享軟件,有問題歡迎留言!

相關文章
相關標籤/搜索