亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【譯文】NPM 小技巧&最佳實(shí)踐

0x584a / 3218人閱讀

摘要:但在生產(chǎn)環(huán)境下,如果不指定保存依賴的版本號(hào)會(huì)存在問(wèn)題。它會(huì)生成一個(gè)文件,不僅記錄了當(dāng)前環(huán)境中使用的模塊精確的版本號(hào),還記錄了這些模塊的其他依賴的版本,以此類推。

本文來(lái)自國(guó)外新手向技術(shù)博客RisingStack。有興趣的同學(xué)可點(diǎn)擊原文查看。

相信npm install是npm-cli最常用的功能,但其實(shí)它還有很多其他可挖掘的地方。在本文中,你將會(huì)學(xué)習(xí)如何在應(yīng)用開發(fā)的整個(gè)生命周期中——包括從新建,到開發(fā),再到發(fā)布上線,npm如何幫你更好地完成開發(fā)。

0. npm基礎(chǔ)使用

在進(jìn)入今天的主題之前,我們先來(lái)回顧下一些npm命令,例如如何確定你的npm版本、哪些命令可供你使用等。

0.1 npm版本

要查看現(xiàn)有的npm版本,在命令行工具中運(yùn)行如下命令:

$ npm --version

但npm其實(shí)能告訴你更多關(guān)于版本的信息,如目前各package的版本、Node.js的版本、OpenSSL版本、V8的版本等,如下:

$ npm version
{ bleak: "1.0.4",
  npm: "2.15.0",
  ares: "1.10.1-DEV",
  http_parser: "2.5.2",
  icu: "56.1",
  modules: "46",
  node: "4.4.2",
  openssl: "1.0.2g",
  uv: "1.8.0",
  v8: "4.5.103.35",
  zlib: "1.2.8" }
0.2 npm help

和很多cli工具一樣,npm也內(nèi)置了一個(gè)很實(shí)用的help功能。讓你可以隨時(shí)查閱各種命令的描述和摘要,它們其實(shí)就是linux的man-page而已。例如:

$ npm help test
NAME  
       npm-test - Test a package

SYNOPSIS  
           npm test [-- ]

           aliases: t, tst

DESCRIPTION  
       This runs a package"s "test" script, if one was provided.

       To run tests as a condition of installation, set the npat config to true.

1. 用npm init來(lái)創(chuàng)建你的項(xiàng)目

When starting a new project npm init can help you a lot by interactively creating a package.json file. This will prompt questions for example on the project"s name or description. However, there is a quicker solution!

創(chuàng)建項(xiàng)目的時(shí)候,npm init的優(yōu)點(diǎn)在于能給交互式地替你創(chuàng)建package.json文件,它會(huì)彈出問(wèn)題讓你填寫項(xiàng)目的名稱和描述等等。但其實(shí)還有更簡(jiǎn)化的方式:

$ npm init --yes

如果你使用npm init --yes的話,它不會(huì)問(wèn)你要如何創(chuàng)建,就直接按默認(rèn)配置創(chuàng)建一個(gè)package.json。這個(gè)默認(rèn)配置當(dāng)然也是可實(shí)現(xiàn)設(shè)置的:

npm config set init.author.name YOUR_NAME  
npm config set init.author.email YOUR_EMAIL  
2. 查找npm的package

考慮到npm中有上萬(wàn)個(gè)模塊供你選擇,要找到合適的package是很困難的。我們團(tuán)隊(duì)的經(jīng)驗(yàn)是這樣,最近在Node.js的問(wèn)卷調(diào)查中,很多開發(fā)者也告訴我們要找到合適的package是很郁悶的一件事情。所以現(xiàn)在我們?cè)囍乙粋€(gè)能發(fā)送HTTP請(qǐng)求的模塊吧~

npms.io這個(gè)網(wǎng)站能很好地幫助到我們。它將各個(gè)package的質(zhì)量、受歡迎度、可維護(hù)性等指標(biāo)做了量化并展現(xiàn)。具體的說(shuō),這些指標(biāo)包括:是否使用了過(guò)時(shí)的依賴包、是否有代碼檢查配置、是否經(jīng)過(guò)測(cè)試以及最近的版本是何時(shí)發(fā)布的,等等。

3. 了解你選擇的package

當(dāng)你選定了你要用的模塊之后(本例中我們選用了request模塊),我們應(yīng)該首先查看它的文檔,看看有什么現(xiàn)存的issue,以便充分了解我們要用在應(yīng)用中的模塊。希望你牢記一點(diǎn),當(dāng)使用的npm package越多,你可能遇到的不可靠或危險(xiǎn)的package也就越多。想了解更多npm相關(guān)的安全風(fēng)險(xiǎn)的話,請(qǐng)閱讀我們寫的一篇指導(dǎo)文檔。

如果想去到package的主頁(yè),可執(zhí)行下面的命令:

$ npm home request

要查看現(xiàn)存的issue,或者公開的roadmap,執(zhí)行以下命令:

$ npm bugs request

另外,如要查看package的倉(cāng)庫(kù),執(zhí)行以下命令:

$ npm repo request
4. 保存依賴

當(dāng)你找到想用在工程里的package之后,下一步就是安裝和保存它。最常用的方式是采用npm install request譯注:其中的request是package名字)。

如果你還想把這個(gè)package自動(dòng)加到package.json里,你可以這樣:

$ npm install request --save

npm會(huì)把你的依賴保存起來(lái),并加上^前綴。這個(gè)前綴的意思是,下次再使用npm install是時(shí)候還會(huì)自動(dòng)安裝這個(gè)package的在此大版本下的最新版本。如果你想修改這個(gè)功能的話,可以:

$ npm config set save-prefix="~"

如果你就想保存目前的這個(gè)版本,可以:

$ npm config set save-exact true
5. 鎖定依賴

你可以像前面一節(jié)講的那樣,在package.json里面指定了保存依賴的版本號(hào)。但大部分npm模塊的作者不會(huì)這樣做,因?yàn)樗麄兿胱詣?dòng)地獲取補(bǔ)丁和新功能。

但在生產(chǎn)環(huán)境下,如果不指定保存依賴的版本號(hào)會(huì)存在問(wèn)題。因?yàn)槿绻『媚汩_發(fā)的過(guò)程中作者發(fā)布了新版本,那么有可能本地和生產(chǎn)環(huán)境使用的依賴的版本就是不一樣的。這個(gè)時(shí)候,如果新版本有bug的話,就會(huì)影響到生產(chǎn)環(huán)境。

要解決這個(gè)問(wèn)題,你可以使用npm shrinkwrap。它會(huì)生成一個(gè)npm-shrinkwrap.json文件,不僅記錄了當(dāng)前環(huán)境中使用的模塊精確的版本號(hào),還記錄了這些模塊的其他依賴的版本,以此類推。一旦工程中有了此文件,npm install就會(huì)使用它來(lái)復(fù)制一個(gè)完全一樣的依賴樹。

6. 查找過(guò)時(shí)的依賴

npm提供了一個(gè)內(nèi)置的工具方法來(lái)查看過(guò)時(shí)的依賴:npm outdated。

$ npm outdated
conventional-changelog    0.5.3   0.5.3   1.1.0  @risingstack/docker-node  
eslint-config-standard    4.4.0   4.4.0   6.0.1  @risingstack/docker-node  
eslint-plugin-standard    1.3.1   1.3.1   2.0.0  @risingstack/docker-node  
rimraf                    2.5.1   2.5.1   2.5.4  @risingstack/docker-node

當(dāng)你維護(hù)的項(xiàng)目很多的時(shí)候,要保持每個(gè)項(xiàng)目中的依賴都是最新的是一件很痛苦的事情。要實(shí)現(xiàn)這個(gè)任務(wù)的自動(dòng)化,可以選用Greenkeeper,當(dāng)有依賴更新的時(shí)候,它會(huì)自動(dòng)為你的倉(cāng)庫(kù)發(fā)pull請(qǐng)求。

7. 保存生產(chǎn)環(huán)境中沒(méi)有devDepenendencies

devDepenendencies為開發(fā)環(huán)境依賴是有原因的,你在生產(chǎn)環(huán)境是用不著他們的。生產(chǎn)環(huán)境不用這些devDepenendencies可以讓你線上的代碼包更小更安全,因?yàn)槎嘁粋€(gè)依賴就多一個(gè)安全風(fēng)險(xiǎn)。

如果需要只安裝生產(chǎn)環(huán)境依賴,運(yùn)行:

$ npm install --production

或者,你可以設(shè)置NODE_ENV變量為生產(chǎn)環(huán)境:

$ NODE_ENV=production npm install
8. 確保你的項(xiàng)目和token的安全

如果你開發(fā)的時(shí)候登陸了Linux系統(tǒng)的用戶,那你的npm token就會(huì)存在.npmrc文件中。有的時(shí)候這個(gè)文件會(huì)不小心被上傳到github。目前,在github上搜索.npmrc文件的話,能找到好幾千個(gè),里面很多都包含了token。如果你自己的倉(cāng)庫(kù)里也有.xxx的文件的話,趕快檢查下自己的證書有沒(méi)有被上傳!

另一個(gè)潛在的安全隱患在于,有的文件會(huì)被不小心上發(fā)布到npm上。一般來(lái)說(shuō)npm是參考.gitignore文件來(lái)決定哪些文件會(huì)被上傳。但你也可以加一個(gè).npmignore文件,它會(huì)override.gitignore

9. 開發(fā)package

在本地開發(fā)package的時(shí)候,大家一般都會(huì)在發(fā)布之前在自己的項(xiàng)目上先實(shí)踐一下。這個(gè)時(shí)候npm link就能派上用場(chǎng)。

npm link的作用在于,它會(huì)在全局目錄創(chuàng)建一個(gè)symlink(符號(hào)鏈接),指向npm link所運(yùn)行的那個(gè)package。

你也可以在其他地方運(yùn)行npm link package-name,這樣會(huì)在全局安裝的package-name和目前項(xiàng)目的/node_modules之間創(chuàng)建一個(gè)symlink。

可以像下面這樣實(shí)踐一下!

# create a symlink to the global folder
/projects/request $ npm link

# link request to the current node_modules
/projects/my-server $ npm link request

# after running this project, the require("request") 
# will include the module from projects/request

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91342.html

相關(guān)文章

  • css相關(guān) - 收藏集 - 掘金

    摘要:在正式前端一些小細(xì)節(jié)前端掘金英文原文,翻譯未來(lái)的太讓人興奮了一方面,是全新的頁(yè)面布局方式另一方面,是酷炫的濾鏡顏色等視覺效果。老司機(jī)教你更好的進(jìn)行編程個(gè)技巧前端掘金并不總是容易處理。 CSS3 實(shí)現(xiàn)文字流光漸變動(dòng)畫 - 前端 - 掘金來(lái)自百度前端技術(shù)學(xué)院的實(shí)踐任務(wù):有趣的鼠標(biāo)懸浮模糊效果,參考:http://ife.baidu.com/course/d...,用CSS3實(shí)現(xiàn)了一下,順便...

    molyzzx 評(píng)論0 收藏0
  • CSS開發(fā)

    摘要:譯十六進(jìn)制顏色揭秘原文地址原文作者譯文出自掘金翻譯計(jì)劃本文永久鏈接教程入門篇關(guān)于是一款進(jìn)行柵格布局的輔助工具,它讓開發(fā)者擺脫了冗雜的數(shù)學(xué)計(jì)算,同時(shí)降低了樣式與結(jié)構(gòu)的耦合程度。 【譯】CSS 十六進(jìn)制顏色揭秘 原文地址:CSS Hex Colors Demystified 原文作者:Dave Gash 譯文出自:掘金翻譯計(jì)劃 本文永久鏈接:https://github.com/xitu/...

    warkiz 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • HTML-CSS-JS

    摘要:本周于上海閉幕,掘金和知乎上都有對(duì)應(yīng)的實(shí)錄和問(wèn)答,但會(huì)議的視頻目前都還沒(méi)放出來(lái),有心的同學(xué)如果找到了歡迎分享。建議中英文對(duì)照閱讀。英文原文前端獨(dú)立技術(shù)博客推薦推薦一些現(xiàn)在還在堅(jiān)持原創(chuàng)的博主,有業(yè)界大牛,也有小鮮肉,也有國(guó)外美女。 CSS 樣式書寫規(guī)范最佳實(shí)踐 本文的所列是實(shí)踐當(dāng)中得出的一套比較不錯(cuò)的 CSS 書寫規(guī)范,可以結(jié)合自身團(tuán)隊(duì)發(fā)展出一套適合自己業(yè)務(wù)的規(guī)范。 CSS中的字體與排版...

    mikasa 評(píng)論0 收藏0
  • HTML-CSS-JS

    摘要:本周于上海閉幕,掘金和知乎上都有對(duì)應(yīng)的實(shí)錄和問(wèn)答,但會(huì)議的視頻目前都還沒(méi)放出來(lái),有心的同學(xué)如果找到了歡迎分享。建議中英文對(duì)照閱讀。英文原文前端獨(dú)立技術(shù)博客推薦推薦一些現(xiàn)在還在堅(jiān)持原創(chuàng)的博主,有業(yè)界大牛,也有小鮮肉,也有國(guó)外美女。 CSS 樣式書寫規(guī)范最佳實(shí)踐 本文的所列是實(shí)踐當(dāng)中得出的一套比較不錯(cuò)的 CSS 書寫規(guī)范,可以結(jié)合自身團(tuán)隊(duì)發(fā)展出一套適合自己業(yè)務(wù)的規(guī)范。 CSS中的字體與排版...

    李世贊 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<