提升你的開發效率,10 個 NPM 使用技巧

對于一個項目,常用的一些npm簡單命令包含的功能有:初始化一個文件夾( npm init ),下載npm模塊( npm install ),創建測試( npm test ) 和自定義腳本( npm run )。但是,進一步了解一些 npm 的使用技巧可以徹底改變你的日常開發任務。

注: 如果你需要關于初學npm的參考,可以參閱我們的初學者指南。如果你對 npm 和 Yarn 之間的差異感到困擾,可以參閱我們發表的文章:Yarn vs npm:你需要知道的一切

  1. 獲取幫助

npm 文檔 和 CLI 命令行文檔 是非常不錯地的學習資料,但需要通過瀏覽器訪問,這并不是很方便。因而可以通過命令行快速獲取所有可選項:

npm help

此外,還能獲取特定 npm 命令的使用幫助:

npm help <command>

例如:`javascript
npm help install


另一種方式是通過下面的命令:

npm -h


2. npm 命令自動完成npm 通過bash提供了命令自動完成功能(包括 Bash for Windows 10 ):

npm completion >> ~/.bashrc

//or Z shell

npm completion >> ~/.zshrc

 重新加載shell配置文件:

source ~/.bashrc


現在,在終端注入 npm ins ,然后按下 tab 鍵就會出現 install 了,不會再浪費時間去全部輸入了。3.修復全局模塊的權限當你試圖安裝全部模塊時,類 Linux 系統可能會拋出權限錯誤,可以在npm命令之前添加 sudo 來執行,但這是一個較危險的選擇。一個更高的解決方式是改變 npm 默認的模塊安裝目錄:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

使用適當的文本編輯器將下面的一行添加到 ~/.bashrc 或者 ~/.zshrc 文件中:

export PATH="$HOME/.npm-global/bin:$PATH"


重新加載配置文件(source ~/.bashrc),然后重新安裝npm到用戶所屬路徑:

npm install -g npm


這也會更新npm。4.持續更新npm你可以通過下面的命令顯示npm當前的版本:

npm -v


如果有需要,可以通過下面的命令更新npm:

npm install -g npm


當 Node 的主版本 released 之后,你也可能需要重新構建 C++ 擴展:

npm rebuild


如果你需要管理多個版本的node.js和npm,可以考慮使用 n 或者 nvm。這有一篇關于 nvm 的文章:使用 nvm 安裝多版本的Node.js5.定義默認的 npm init使用 npm init 初始化一個新的項目,這會提示你關于項目的更多細節,并創建一個 package.json 文件。如果你厭倦了每次開始一個新的項目都需要重新輸入同樣的信息,可以使用 -y 標記表示你能接受 package.json 文件的一堆默認值:

npm init -y


或者你可以設置一些語義化的默認值:

npm config set init.author.name
npm config set init.author.email


6.更精準的模塊搜索到目前為止,npm上已經有超過350000個模塊了,并且每天還在持續增長。盡管有很多非常棒的模塊,但是你還是想避免使用一些不受歡迎的、存在bug的或者無人維護的模塊。在 npmjs 和 Github 上搜索npm模塊是很實用但這還有一些其它選擇:

npms


npms 根據一個基于項目版本、模塊下載次數、最新更新日期、提交頻率、測試覆蓋率、文檔、貢獻者數量、issues數、star數、forks數和作者在社區的地位的綜合測量分數進行模塊排名。

npm Discover


npm Discover 定位于快速搜索和其它模塊通常一起使用的模塊,如 body-parser 通常和Express一起使用。

Packages by PageRank


Packages by PageRank 按照模塊的谷歌排名進行搜索和排序。

Curated npm Lists


還一個選擇就是利用別人的搜索結果。當需要一個健壯的解決方案時,我經常會參考 sindresorhus 的 Awesome Node.js。7.管理你的模塊你已經安裝了一些模塊,看看都有啥:

npm list


(ls、la & ll 可以用作 list 的別名)該命令會顯示所有模塊:(安裝的)模塊,子模塊以及子模塊的子模塊等。可以限制輸出的模塊層級:

npm list --depth=0


打開一個模塊的主頁:

npm home


這只有在你的系統能打開瀏覽器時有用--在服務端的系統上會失敗。同樣,可以打開一個模塊的 Github 倉庫:

npm repo


或者它的文檔:

npm docs


或者它目前的bugs列表:

npm bugs


npm list 會顯示和你已經安裝地模塊的關聯模塊---這些沒有在 package.json文件中被引用。你可以單獨 npm uninstall 每一個模塊或者全部移除它們:

npm prune


如果安裝模塊時你添加了 --production 標記或者 NODE_ENV 被設置成 production,package.json 文件中被指定為 devDependencies 的模塊也會被移除。8.鎖定依賴默認情況下,當用 --save/-S 或者 --save-dev/-D 安裝一個模塊時,npm 通過脫字符(^)來限定所安裝模塊的主版本號。例如,當運行 npm update 時, ^1.5.1 允許安裝版本號大于 1.5.1 但小于 2.0.0 版本的模塊。波浪號(~)字符是限定模塊的次要版本。例如,當運行 npm update 時, ~1.5.1 允許安裝版本號大于 1.5.1但小于 1.6.0 版本的模塊。可以將需要安裝的模塊版本前綴默認設置成波浪號(~):

npm config set save-prefix="~"


對于那些偏執的認為任何更新(模塊的行為)會破壞系統的人,可以配置npm僅安裝精確版本號的模塊:

npm config set save-exact true


另一個選擇是,可以在項目中使用 shrinkwrap:

npm shrinkwrap


這會生成一個 shrinkwrap.json 文件,該文件包含了你正在使用的模塊的指定版本。當運行 npm install時,該文件所指定的模塊版本會覆蓋 package.json 文件中所指定的版本。9. 找出過時的模塊怎么知道一個模塊已經更新了呢?我之前的方式是先列舉出項目所依賴的模塊(npm list --depth=0),然后在 npmjs.com 上找到該模塊,手動檢查該模塊的版本是否已經更新。這非常費時。幸運的是,有一個更簡單的方式:

npm outdated


或者 npm outdated -g 來查找全局模塊。你也可以查看一個獨立模塊的當前版本:

npm list


也可以查看檢驗當前和歷史版本:

npm view versions


npm view <package> 會顯示一個獨立模塊的所有信息,包括它的依賴、關鍵字、更新日期、貢獻者、倉庫地址和許可證等。10.使用開發中的模塊當你正在開發一個模塊時,會經常想在其它項目中嘗試使用或者在任何一個目錄運行它(如果你的應用支持),這時沒必要將其發布到 npm,并全局安裝---僅需在該模塊所在目錄使用下面的命令:

npn link


該命令會為模塊在全局目錄下創建一個符號鏈接。可以通過下面的命令查看模塊引用:

npm list -g --depth=0


或者:

npm outdated -g

現在,就可以從命令行運行模塊或者通過 require 在任何項目中引入該模塊。另一個選擇是,可以通過文件路徑在 package.json 文件中聲明對該模塊的依賴:

"dependencies": {
"myproject": "file:../myproject/"
}

 ####文章轉載自 開源中國社區 [http://www.oschina.net]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456322.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

E: 無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用) E: 無法獲取 dpkg 前端鎖 (/var/lib/dpkg/lock-front

解決&#xff1a; E: 無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用) E: 無法獲取 dpkg 前端鎖 (/var/lib/dpkg/lock-frontend)&#xff0c;是否有其他進程正占用它&#xff1f; 方法&#xff1a; 重新啟動虛擬機服務器 再在黑屏終端中重新嘗試輸入su…

聚類效果評估指標總結

前言 實際工作中經常會用到一些聚類算法對一些數據進行聚類處理&#xff0c;如何評估每次聚類效果的好壞&#xff1f;可選的方法有1、根據一些聚類效果的指標來評估&#xff1b;2、直接打點。今天就主要總結下這段時間了解的聚類效果評估指標。廢話少說&#xff0c;直接上干貨…

{%extends bootstrap/base.html%}的添加,使得其他block無法繼承

仙說{%extends "bootstrap/base.html"%}用法&#xff1a; 在base.html中調用一次即可&#xff0c;并且 {%extends "bootstrap/base.html"%} 要放在 最后頭&#xff01;&#xff01;最后頭&#xff01;最后頭&#xff01; base中不用再添加 {% block cont…

Vue.directive自定義指令

Vue除了內部指令&#xff0c;我們也可以定義一些屬于自己的指令&#xff0c;比如我們要定義一個v-diy的指令&#xff0c;作用就是讓文字變成紅色。 寫好了這個功能&#xff0c;我們現在就自己定義一個全局的指令。我們這里使用Vue.directive( ); html <div v-diy"color…

HTML5 SVG

SVG介紹1.什么是svgsvg指可伸縮矢量圖形&#xff08;Scalable Vector Graphics &#xff09;svg用來定義用于網絡的基于矢量圖形svg使用XML格式定義圖形svg圖像在放大或改變尺寸的情況下其圖形質量不會有損失svg是網為王聯盟的標準2.svg的優勢svg圖像可通過文本編輯器來創建和修…

運用Nginx代理和UWSGI將Flask項目部署在Linux中 詳細步驟

nginx: 安裝可以參照的路徑: http://nginx.org/en/linux_packages.html#Ubuntu 啟動Nginx nginx [ -c configpath] 默認配置目錄&#xff1a;/etc/nginx/nginx.conf 查看進程&#xff1a; ps -ef |grep nginx 控制Nginx nginx -s xxxstop 快速關閉quit …

機器學習算法之KNN

前言 KNN一般用于有監督的分類場景&#xff0c;除此之外&#xff0c;KNN在異常檢測場景中也有應用&#xff0c;下面主要介紹下KNN在這兩面的應用原理。 KNN做分類的原理 計算步驟如下&#xff1a; 1&#xff09;算距離&#xff1a;給定測試對象&#xff0c;計算它與訓練集中…

Supermap 組合單值專題圖與標簽專題圖演示樣例

效果圖例如以下&#xff1a;單值專題圖并顯示每一個區域的相關文字信息 代碼&#xff1a; <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>單值專題圖</title>…

[劍指Offer] 25.復雜鏈表的復制

1 /*2 struct RandomListNode {3 int label;4 struct RandomListNode *next, *random;5 RandomListNode(int x) :6 label(x), next(NULL), random(NULL) {7 }8 };9 */ 10 class Solution 11 { 12 public: 13 //在舊鏈表中創建新鏈表&#xff0…

Flask項目中應用七牛云存儲

七牛云存儲&#xff1a; https://developer.qiniu.com/kodo/sdk/1242/python 點擊注冊開通七牛開發者帳號 如果已有賬號&#xff0c;直接登錄七牛開發者后臺&#xff0c;點擊這里查看 Access Key 和 Secret Key pip install qiniu q Auth(Access Key,Secret Key) b…

異常檢測算法之IForest

前言 IForest即孤立森林&#xff0c;可以用于做異常檢測。一句話總結IForest做異常檢測的原理&#xff1a;異常點密度小&#xff0c;基于樹模型容易被一下切割出來&#xff0c;正常值密度大&#xff0c;需要切割多次才能得到目標值。 原理 iForest算法得益于隨機森林的思想&…

JavaScript - 動態數據

1、使用ajax進行數據的請求 function getData(params){$.ajax({type: "POST", //提交方式data: "{params}", //請求參數url:, //請求接口contentType: "application/text;charsetutf-8",async: false, //是否同步dataType: &quo…

用c#編寫爬蟲在marinetraffic下載船僅僅圖片

近期在做船僅僅識別方面的事情&#xff0c;須要大量的正樣本來訓練adaboost分類器。于是到marinetraffic這個站點上下載船僅僅圖片。寫個爬蟲來自己主動下載顯然非常方便。 站點特點 在介紹爬蟲之前首先了解一下marinetraffic這個站點的一些特點&#xff1a; 1. 會定期檢測爬蟲…

發送手機驗證碼通過調用第三方網易云信API(flask項目)

一、 獲取驗證碼&#xff1a; 1. 輸入手機號碼 2. 通過ajax發送請求 3. 后端&#xff1a; 獲取手機號碼 使用requests向第三方的服務端&#xff08;網易云信&#xff09;發送請求 官方文檔 https://dev.yunxin.163.com/docs/product/%E7%9F%AD%E4%BF%A1/%E7%9F…

異常檢測算法之LOF

前言&#xff1a; LOF&#xff1a;Local outlier factor&#xff0c;即局部異常因子。LOF主要是通過比較每個點p和其鄰域點的密度來判斷該點是否為異常點&#xff0c;如果點p的密度越低&#xff0c;越可能被認定是異常點。至于密度&#xff0c;是通過點之間的距離來計算的&…

Android屬性動畫進階用法

2019獨角獸企業重金招聘Python工程師標準>>> 在上周二文章中介紹補間動畫缺點的時候有提到過&#xff0c;補間動畫是只能對View對象進行動畫操作的。而屬性動畫就不再受這個限制&#xff0c;它可以對任意對象進行動畫操作。那么大家應該還記得之前我舉的一個例子&am…

5.3linux下C語言socket網絡編程簡例

原創文章&#xff0c;轉載請注明轉載字樣和出處&#xff0c;謝謝&#xff01; 這里給出在Linux下的簡單socket網絡編程的實例&#xff0c;使用tcp協議進行通信&#xff0c;服務端進行監聽&#xff0c;在收到客戶端的連接后&#xff0c;發送數據給客戶端&#xff1b;客戶端在接受…

parser.add_argument驗證格式

article_bp Blueprint(article, __name__, url_prefix/api) api Api(article_bp) parser reqparse.RequestParser() parser.add_argument(name, typestr, help必須填寫名稱, requiredTrue) channel_fields { id: fields.Integer, cname: fields.String } clas…

異常檢測算法之HBOS

前言 HBOS&#xff08;Histogram-based Outlier Score&#xff09;核心思想&#xff1a;將樣本按照特征分成多個區間&#xff0c;樣本數少的區間是異常值的概率大。 原理 該方法為每一個樣本進行異常評分&#xff0c;評分越高越可能是異常點。評分模型為&#xff1a; 假設樣…

字典和json 的區別 和轉換

前言&#xff1a;字典和json非常像。接下來比較一下兩者的異同 先看一下字典的寫法&#xff1a; a {a:1,b:2,c:3} 再看一下json的寫法&#xff1a; {"studentInfo":{"id":123456,"stu_name":"Dorra"} } 從形式上看&#xff0c;都是…