摘要:沒有安裝全局某個項目不影響該命令的使用。該標志會安裝,忽略。這會確保開發(fā)所使用的工具及不會進入生產(chǎn)環(huán)境。結(jié)果就是,發(fā)布項目時,不得不審查兩個文件是否同步,防止敏感信息的泄露。確保更改默認的用戶名,作為用戶名環(huán)境變量的值。
本文轉(zhuǎn)載自:眾成翻譯
譯者:文藺
鏈接:http://www.zcfy.cc/article/1206
原文:https://nodesource.com/blog/eleven-npm-tricks-that-will-knock-your-wombat-socks-off/
有效率地使用 npm 可能會很困難。內(nèi)置特性堆積如山,嘗試學(xué)習(xí)它們是很艱巨的任務(wù)。
就我個人而言,單學(xué)習(xí)并使用其中一些小 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,并在命令行中打印出當(dāng)前版本、所需版本以及最新版本。
4. 檢查 package.json 中未聲明的 package運行: npm prune
運行 prune 命令,npm CLI 會讀取 package.json,并將結(jié)果與項目的 /node_modules 目錄進行對比,并打印出不在 package.json 之列的模塊列表。
npm prune 命令接著會拿出這些 package,并移除那些沒有手動加到 package.json 中或沒有使用 --save 標志安裝的 package。
更新: 感謝 @EvanHahn 提醒,一種個人配置可以讓 npm prune 提供與 npm 默認方式略有不同的結(jié)果。
5. 鎖定依賴版本運行: npm shrinkwrap
在項目中使用 shrinkwrap 命令,會生成一個 npm-shrinkwrap.json 文件,將項目依賴鎖定在當(dāng)前在 node_modules 中使用的特定版本。運行 npm install 時,若發(fā)現(xiàn)存在 npm-shrinkwrap.json,則會覆蓋列出的依賴以及 package.json 中的任何語義版本范圍。
如果需要驗證項目中 package.json、 npm-shrinkwrap.json 及 node_modules 的一致性,可以考慮使用 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 要當(dāng)心如果還沒使用過 .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) } }最后一點...
若想學(xué)習(xí)更多關(guān)于 npm、Node.js、JavaScript、Docker、Kubernetes 以及 Electron 等等等等,可以在 Twitter、 上關(guān)注 @NodeSource。我們一直都在,很樂意收到你的消息!
譯者注更多內(nèi)容,歡迎關(guān)注個人博客 http://www.wemlion.com/。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80292.html
摘要:有談?wù)劽嬖嚺c面試題對于前端面試的一些看法。動態(tài)規(guī)劃算法的思想及實現(xiàn)方法幫大家理清動態(tài)規(guī)劃的解決思路以及原理方法前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個方面。極客學(xué)院前端練習(xí)題道練習(xí)題,面試季練練手。 由數(shù)據(jù)綁定和排序引入的幾個 JavaScript 知識點 在 JavaScript 的數(shù)據(jù)綁定和做簡單的表格排序中遇到的幾個知識點 [[JS 基礎(chǔ)...
摘要:前端日報精選中的操作符譯理解教程構(gòu)建一個預(yù)渲染友好的應(yīng)用示例譯如何學(xué)習(xí)開發(fā)如何編寫輕量級框架中文譯后臺運行實戰(zhàn)手冊分析器入門博客眾成翻譯一款簡單到極致的數(shù)據(jù)流框架使用組件的四個技巧關(guān)鍵請求教程奇舞周刊第期前端路上的旅行如何只用完 2017-08-12 前端日報 精選 JSX中的spread操作符【譯】理解Service WorkerVue.js教程: 構(gòu)建一個預(yù)渲染SEO友好的應(yīng)用示例...
摘要:處理文件的擴展名很多的配置文件都有一個屬性,然后就像下面代碼所示有一個空字符串的值??兆址诖耸菫榱艘恍┰谖募r不帶文件擴展名的表達式,如或者譯者注實際就是自動添加后綴,默認是當(dāng)成文件來查找路徑就這么多。 原文 Webpack—The Confusing Partsissue討論 Webpack是目前基于React和Redux開發(fā)的應(yīng)用的主要打包工具。我想使用Angular 2或其他...
摘要:你可以進行如下操作需要注意的是這個竅門只適用于。在中就不需要進行操作了,因為它已經(jīng)默認進行了。這里有幾個例子可以供你參考譯文出處本文根據(jù)的所譯,整個譯文帶有我自己的理解與思想,如果譯得不好或有不對之處還請同行朋友指點。 枚舉 不要這么做: i = 0 for item in iterable: print i, item i += 1 而是這樣: for...
閱讀 800·2023-04-26 00:30
閱讀 2710·2021-11-23 09:51
閱讀 1056·2021-11-02 14:38
閱讀 2596·2021-09-07 10:23
閱讀 2254·2021-08-21 14:09
閱讀 1396·2019-08-30 10:57
閱讀 1611·2019-08-29 11:20
閱讀 1160·2019-08-26 13:53