[譯] 讓人傾倒的 11 個 Npm Trick

原文作者:@Tierney Coren
原文地址:https://nodesource.com/blog/eleven-npm-tricks-that-will-knock-your-wombat-socks-off/
中文翻譯:文藺
譯文地址:http://www.wemlion.com/2016/eleven-npm-tricks-that-will-knock-your-wombat-socks-off/
蒙原作者惠允翻譯發(fā)布,轉(zhuǎn)載請保留此聲明。
著作權(quán)屬于原作者,請勿用作商業(yè)用途。

讓人傾倒的 11 個 npm trick

有效率地使用 npm 可能會很困難。內(nèi)置特性堆積如山,嘗試學習它們是很艱巨的任務(wù)。
就我個人而言,單學習并使用其中一些小 trick 解救了我,從前移除那些未使用的模塊時,我只能先刪除整個 node_modules
文件夾,接著再用 npm install
重新安裝一切。(npm prune
,請見本文第四節(jié)。)如你所想,這簡直要讓人發(fā)狂了。
我們編了這樣一個 trick 列表,使用起來很簡單,它們會加速你使用 npm 開發(fā)的過程,無論你在做什么項目。
1.打開 package 主頁
運行: npm home $package

執(zhí)行 home
命令會打開 $package
的主頁。例如,如果指定 $package
為 lodash
,那么就就會打開 Lodash 官網(wǎng)。沒有安裝(全局/某個項目) package 不影響該命令的使用。
2. 打開 package Github 倉庫
運行: npm repo $package

類似前面的 home
命令, repo
命令會打開 $package
的 Github 倉庫。如 npm repo express
會打開 Express 的官方倉庫地址。同樣,不需要安裝 package 就能使用。
3. 檢查 package 的過時依賴
運行: npm outdated

在項目中,運行 outdated
命令會通過 npm registry 檢查是否有過時的 package,并在命令行中打印出當前版本、所需版本以及最新版本。

在 Node 項目中運行 npm outdated

4. 檢查 package.json 中未聲明的 package
運行: npm prune

運行 prune
命令,npm CLI 會讀取 package.json
,并將結(jié)果與項目的 /node_modules
目錄進行對比,并打印出不在 package.json
之列的模塊列表。
npm prune
命令接著會拿出這些 package,并移除那些沒有手動加到 package.json
中或沒有使用 --save
標志安裝的 package。

在 Node 項目中運行 npm prune

更新: 感謝 @EvanHahn 提醒,一種個人配置可以讓 npm prune
提供與 npm
默認方式略有不同的結(jié)果。
5. 鎖定依賴版本
運行: npm shrinkwrap

在項目中使用 shrinkwrap
命令,會生成一個 npm-shrinkwrap.json
文件,將項目依賴鎖定在當前在 node_modules
中使用的特定版本。運行 npm install
時,若發(fā)現(xiàn)存在 npm-shrinkwrap.json
,則會覆蓋列出的依賴以及 package.json
中的任何語義版本范圍。
如果需要驗證項目中 package.json
、 npm-shrinkwrap.json
及 node_modules
的一致性,可以考慮使用 npm-shrinkwrap。

在 Node 項目中運行 npm shrinkwrap

6. 在 Node.js v4 LTS 中使用 npm v3
運行: npm install -g npm@3

使用 npm 全局安裝 npm@3
,會將 npm v2 升級至 v3。使用 npm v2 LTS 的 Node.js v4 LTS 發(fā)布版本(“Argon”)中也是如此。這會在 v4 LTS 中安裝 npm v3 的最新穩(wěn)定版本。(譯者注:LTS 指 Long-Term Support, 即提供長期技術(shù)支持的版本。)
7. 運行 npm install -g
,無需加 sudo

運行: npm config set prefix $dir

$dir
指你想將全局依賴安裝在的目錄,運行命令,這一來,安裝全局模塊再也不用使用 sudo,該目錄則成為全局的 bin 目錄。唯一需要注意的是,確保使用 chown -R $USER $dir
該目錄的調(diào)整用戶權(quán)限。
8. 改變所有項目的默認前綴
運行: npm config set save-prefix ~

使用 --save
或 --save-dev
標志安裝新 package 時,使用 ~
比默認的 ^
行為更加保守。~
將依賴鎖定在小版本(minor version),允許使用 npm update
安裝補丁版本。^
將依賴鎖定在主版本,允許使用 npm update
更新小版本。
9. 生產(chǎn)環(huán)境下去除 devDependencies
依賴
項目準備上到生產(chǎn)環(huán)境時,確保使用 --production
標志安裝依賴。該標志會安裝 dependencies
,忽略 devDependencies
。這會確保開發(fā)所使用的工具及 package 不會進入生產(chǎn)環(huán)境。
此外,還可以將 NODE_ENV
環(huán)境變量設(shè)置為 production
,確保 devDependencies
絕不會被安裝。
10. 使用 .npmignore
要當心
如果還沒使用過 .npmignore
,會默認使用 .gitignore
文件,加上一些更健全的默認選項。
很多人不明白都是,一旦在項目中添加了 .npmignore
文件,.gitignore
的規(guī)則就會被忽略(好諷刺,出乎意料?。?。結(jié)果就是,發(fā)布項目時,不得不審查兩個文件是否同步,防止敏感信息的泄露。
11. 帶默認內(nèi)容的 npm init

在新項目中運行 npm init
時,可以配置 package.json
細節(jié)。如果想設(shè)置 npm init
會一直使用的默認工作,可以使用 config set
命令,加上一些額外的參數(shù):
npm config set init.author.name $name
npm config set init.author.email $email

若想徹底自定義初始化腳本,可以指定一個自定義的默認腳本:
npm config set init-module ~/.npm-init.js

下面是一個示例腳本,會彈出私有設(shè)置項,在需要情況下創(chuàng)建 Github 倉庫。確保更改默認的 Github 用戶名(YOUR_GITHUB_USERNAME
),作為 Github 用戶名環(huán)境變量的 fallback 值。
var cp = require('child_process');
var priv;

var USER = process.env.GITHUB_USERNAME || 'YOUR_GITHUB_USERNAME';

module.exports = {

name: prompt('name', basename || package.name),

version: '0.0.1',

private: prompt('private', 'true', function(val){
return priv = (typeof val === 'boolean') ? val : !!val.match('true')
}),

create: prompt('create github repo', 'yes', function(val){
val = val.indexOf('y') !== -1 ? true : false;

if(val){
console.log('enter github password:');
cp.execSync("curl -u '"+USER+"' https://api.github.com/user/repos -d " +
"'{"name": ""+basename+"", "private": "+ ((priv) ? 'true' : 'false') +"}' ");
cp.execSync('git remote add origin '+ 'https://github.com/'+USER+'/' + basename + '.git');
}

return undefined;
}),

main: prompt('entry point', 'index.js'),

repository: {
type: 'git',
url: 'git://github.com/'+USER+'/' + basename + '.git' },

bugs: { url: 'https://github.com/'+USER'/' + basename + '/issues' },

homepage: "https://github.com/"+USER+"/" + basename,

keywords: prompt(function (s) { return s.split(/\s+/) }),

license: 'MIT',

cleanup: function(cb){

cb(null, undefined)
}

}

最后一點…
若想學習更多關(guān)于 npm、Node.js、JavaScript、Docker、Kubernetes 以及 Electron 等等等等,可以在 Twitter、 上關(guān)注 @NodeSource。我們一直都在,很樂意收到你的消息!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 原文地址:https://tech.meituan.com/npm-shrinkwrap.html 在一次項目開發(fā)...
    RiverSouthMan閱讀 1,356評論 0 0
  • npm是什么 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 8,123評論 0 9
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey閱讀 6,361評論 2 36
  • 概述 《開始寫吧!非虛構(gòu)文學創(chuàng)作》是一本關(guān)于非虛構(gòu)文學,即散文、隨筆、回憶錄等體裁的寫作指導(dǎo)書。 此書作者是近年來...
    人在陌上閱讀 2,119評論 4 12

友情鏈接更多精彩內(nèi)容