首頁 web前端 js教程 分享用npm安裝/刪除/發佈/更新/撤銷發布包

分享用npm安裝/刪除/發佈/更新/撤銷發布包

Jun 26, 2017 pm 03:26 PM
刪除 使用 發布 安裝 更新

 

 

#一.什麼是npm?
npm是javascript的套件管理工具,是前端模組化下的一個標誌性產物
簡單地說,就是透過npm下載模組,重複使用現有的程式碼,提高工作效率
 
1.從社區的角度:把針對某一特定問題的模組發佈到npm的伺服器上,供社區裡的其他人下載和使用,同時自己也可以在社區裡尋找特定的模組的資源,解決問題
2.從團隊的角度:有了npm這個套件管理工具,重複使用團隊既有的程式碼也變的更方便
 
##npm安裝的方式-本機安裝與全域安裝
 
##什麼時候用本地/全域安裝?
1.當你試圖安裝命令列工具的時候,例如grunt CLI的時候,使用全域安裝
# #全域安裝的方式:npm install -g 模組名稱

2.當你試圖通過npm install 某個模組,並透過require('XXX')的方式引入的時候,使用本機安裝
本機安裝的方式:npm install 模組名稱
 
你很可能遇到的問題在你試圖本地安裝的時候一般都會遇到permission deny的問題
例如我這裡第一次嘗試全域安裝express,輸入npm install -g express
  【吐槽】而且讓人無語的是在安裝了許多依賴後才提醒你權限不夠...
###解決方式:##################1.### ###sudo npm install -g XXX ,以管理員的身分安裝######## #######評價:###每次都要輸入帳號和密碼,非常繁瑣,而且官方不推薦###( You could also try using sudo, but this should be avoided)#### ###########2.### ###sudo chown -R 你的帳號名稱npm所在目錄的路徑/{lib/node_modules,bin,share}######### #######評價:###官方推薦的做法###,chown全稱為change owner,即將npm目錄的所有者指定為你的名字(授予權限),-R表示對指定目錄下所有的子目錄和檔案也都採取同種操作。 ######
 
<1>首先,透過npm config get prefix取得npm所在目錄的路徑,例如像這樣:
<2>在命令列輸入sudo chown -R 你的帳號名稱npm所在目錄的路徑/{lib/node_modules, bin,share},例如:
【注意】{lib/node_modules,bin,share}中的大括號是要寫上去的
再次全域安裝express:輸入npm install -g express

 

安裝成功
 
#3.sudo chmod 777 npm所在目錄(不推薦)
#評價:這是網路上經常能夠看到的解決方式,但,官方教程裡沒有對此有任何提及。 chmod代表change mode更改讀寫模式,對該目錄授予最高權限,任何人可讀可寫,這是很危險的
 
本機安裝的時候,將依賴套件資訊寫入package.json中
## 
注意一個問題,在團隊協作中,一個常見的情景是他人從github上clone你的項目,然後通過npm install安裝必要的依賴,(剛從github上clone下來是沒有node_modules的,需要安裝)那麼根據什麼資訊安裝依賴呢?就是你的package.json中的dependencies和devDepencies。所以,在本地安裝的同時,將依賴套件的資訊(要求的名稱和版本)寫入package.json中是很重要的!
 
npm install 模組:安裝好後不寫入package.json中
npm install 模組--save 安裝好後寫入package.json的dependencies中(生產環境依賴)
#npm install 模組--save-dev 安裝好後寫入package.json的devDepencies中(開發環境依賴)
範例:
我在專案下安裝webpack:進入專案終端輸入npm install
#安裝後我的package.json
卸掉webpack再重裝:輸入npm install webpack --save後:
##卸掉webpack再重裝:npm install webpack --save-dev後:
 
三.利用npm刪除套件#
刪除模組其實很簡單:
 
#刪除全域模組
# #npm uninstall -g 利用npm
#刪除本機模組
##npm uninstall 模組
 
刪除本機模組時你應該思考的問題:
是否將在package.json上的對應依賴資訊也消除?
npm uninstall 模組:刪除模組,但不刪除模組留在package.json中的對應資訊
npm uninstall 模組--save 刪除模組,同時刪除模組留在package.json中dependencies下的對應資訊
npm uninstall 模組--save-dev 刪除模組,同時刪除模組留在package.json中devDependencies下的對應訊息
 
四.利用npm 發布套件##你必須有一個npm的帳號
第一次發布包:
在終端機輸入npm adduser,提示輸入帳號,密碼和郵箱,然後將提示建立成功
非第一次發布包:
在終端機輸入npm login,然後輸入你創建的帳號和密碼,和郵箱,登陸
#注意】npm adduser成功的時候默認你已經登陸了,所以不需要再接著npm login.
 
範例:
##(因為我已經創建過帳號了,所以直接登入)
1.進入專案目錄下,然後再登陸:
 
2.透過npm publish寄包
套件的名稱和版本就是你專案裡package .json裡的name和version哦!
 
3然後你到npm的搜尋裡就可以找到被發佈的APP啦!
 

#【注意點1】不能和已有的套件的名字重名!
例如我試著把套件名稱改成'react'顯然已有的套件:
######## #########然後發包的時候就會...######
(翻譯:你沒有發布react套件的權限,請問你是以react所有者的身份登陸的嗎?)
【提示】在發包前可以透過npm的搜尋引擎找出是否已存在相同名稱的套件
【注意點2】還有一點要注意的是npm對包名的限制:不能有大寫字母/空格/下滑線!
#(其實在上面的例子中我原本打算寫成penghuwanAPP的,報錯。
## 

【注意點3】你的專案裡有部分私密的程式碼不想發佈到npm上?

將它寫入.gitignore 或.npmignore中,上傳就會被忽略了

 
五.利用npm撤銷發布包
#這裡要說一點,取消發布包可能並不像你想像得那麼容易,這種操作是受到諸多限制的,撤銷發布的包被認為是一種不好的行為
#(試想一下你撤銷了發布的包[假設它已經在社群內有了一定程度的影響],這對那些已經深度使用並依賴你發布的包的團隊是件多麼崩潰的事情! 範例:
我現在將先前發佈的套件penghuwanapp撤銷掉:輸入npm unpublish 套件名稱
 【吐槽】注意看紅框框住的字,你就知道npm官方撤銷已發布的包對這種行為的態度了....
 【注意】如果報權限方面的錯,加上--force
 
#再去npm搜尋已經搜不到了

 

1根據規範,只有在發包的

#24小時內才允許

撤銷發布的套件( unpublish is only allowed with versions published in the last 24 hours)
#2
即使

你撤銷了發布的包,

#發包的時候也不能再和被撤銷的套件的名稱和版本重複了
(即不能名稱相同,版本相同,因為這兩者構成的唯一標識已經被“佔用”了) 
例如我在撤銷套件後嘗試再發佈相同名稱+相同版本的套件:
報錯,並建議我修改套件的版本 #
npm unpublish的推薦替代指令:npm deprecate [@]
#使用這個指令,並不會在社群中撤銷你已有的包,但會在任何人嘗試安裝這個包的時候得到警告
例如:npm deprecate penghuwanapp '這個套件我已經不再維護了喲~'
六.npm更新發布後的套件:
事實上npm更新套件和發布套件的指令是一樣的,都是npm publish,不同之處在於,你需要修改套件的版本
 
所以步驟是:
#1.修改套件的版本(package.json裡的version欄位)
2.npm publish
關於修改版本的細節請看下面:
 
七.npm的版本控制-Semantic versioning
在我們的package.json裡面有version欄位。那麼,怎麼在專案不斷建置的過程中調整版本呢?
npm有一套自己的版本控制標準-Semantic versioning(語意化版本)
 
#具體體現為:
#對於"version":"x.y.z"
#1.修復bug,小改動,增加z
#2.增加了新特性,但仍能向後相容,增加y
3.有很大的改動,無法向後相容,增加x
 
例如:我原本的項目是1.0.0版本的話
若是1中情況,變成1.0.1

若是2中情況,變為1.1.0
若是3中情況,變為2.0.0

 

##############################################################透過npm version 自動改變版本#####################update_type為patch, minor, or major其中之一,分別表示補丁,小改,大改變############### #########例如我在shell去改變專案版本############## # ###########再來看看我的package.json,已經變成了v1.0.0##################【完結】## ############# ######

以上是分享用npm安裝/刪除/發佈/更新/撤銷發布包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
微信拉黑再刪除永久加不上是真的嗎 微信拉黑再刪除永久加不上是真的嗎 Apr 08, 2024 am 11:41 AM

1.首先,拉黑再刪除永久加不上是假的,拉黑刪除後想要再加對方,只要對方同意即可。 2.如果用戶將某人封鎖,對方將無法向用戶發送訊息、查看用戶的朋友圈、與用戶通話。 3.封鎖並不意味著將對方從用戶的微信聯絡人清單中刪除。 4.如果用戶在封鎖後又將對方從用戶的微信聯絡人清單中刪除,那麼在刪除後是沒有辦法恢復的。 5.如果用戶想再加入對方為好友,需要對方同意並重新新增使用者。

抖音聊天記錄怎麼徹底消除乾淨 抖音聊天記錄怎麼徹底消除乾淨 May 07, 2024 am 11:14 AM

1.開啟抖音app,點選介面底部的【訊息】,點選需要刪除的聊天對話入口。 2.長按任一聊天記錄,點選【多選】,勾選想要刪除的聊天記錄。 3.點選右下角的【刪除】按鈕,在彈出的視窗中選擇【確認刪除】即可將這些記錄永久刪除。

PHP實用技巧:刪除程式碼中的最後一個分號 PHP實用技巧:刪除程式碼中的最後一個分號 Mar 27, 2024 pm 02:24 PM

PHP實用技巧:刪除程式碼中的最後一個分號在寫PHP程式碼時,常常會遇到需要刪除程式碼中最後一個分號的情況。這可能是因為複製貼上引入了多餘的分號,或是為了優化程式碼風格和結構。在本文中,我們將介紹一些方法來刪除PHP程式碼中的最後一個分號,並且提供具體的程式碼範例。方法一:使用substr函數substr函數可以從字串中傳回指定長度的子字串。我們可以

Windows無法存取指定裝置、路徑或文件 Windows無法存取指定裝置、路徑或文件 Jun 18, 2024 pm 04:49 PM

小夥伴電腦出現這樣的故障,開啟「此電腦」和C碟檔案會提示「Explorer.EXEWindows無法存取指定裝置、路徑或檔案。你可能沒有適當的權限存取存取專案。」包括資料夾、檔案、此電腦、回收站等,雙擊都會彈出這樣的窗口,右鍵又是正常的。這是系統更新導致,如果你也遇到這樣的狀況,下面小編教大家如何解決。一,開啟登錄編輯程式Win+R,輸入regedit,或右鍵開始選單執行輸入regedit;二,定位登錄機「電腦\HKEY_CLASSES_ROOT\PackagedCom\ClassInd

微信朋友圈怎麼刪除 微信朋友圈怎麼刪除 Apr 08, 2024 pm 03:25 PM

1.打開微信app,點選右下角的【我】,找到並點選【朋友圈】選項。 2.點選右上角的【我的朋友圈】,在我的朋友圈介面找到想要刪除的朋友圈內容。 3.點選進入這條朋友圈的詳情頁,點選該條內容發佈時間右側的【小垃圾桶】圖示。 4.在彈出的視窗中選擇【確定】即可,這樣就完成了刪除朋友圈內容的操作。

Win7系統下如何安裝Go語言? Win7系統下如何安裝Go語言? Mar 27, 2024 pm 01:42 PM

在Win7系統下安裝Go語言是一項相對簡單的操作,只需按照以下步驟進行操作即可成功安裝。以下將詳細介紹在Win7系統下安裝Go語言的方法。第一步:下載Go語言安裝包首先,開啟Go語言官方網站(https://golang.org/),進入下載頁面。在下載頁面中,選擇與Win7系統相容的安裝套件版本進行下載。點擊下載按鈕,等待安裝包下載完成。第二步:安裝Go語言下

Win7電腦上安裝Go語言的詳細步驟 Win7電腦上安裝Go語言的詳細步驟 Mar 27, 2024 pm 02:00 PM

在 Win7電腦上安裝Go語言的詳細步驟Go(又稱Golang)是一種由Google開發的開源程式語言,其簡潔、高效和並發效能優秀,適合用於開發雲端服務、網路應用和後端系統等領域。在Win7電腦上安裝Go語言,可以讓您快速入門這門語言並開始編寫Go程式。以下將會詳細介紹在Win7電腦上安裝Go語言的步驟,並附上具體的程式碼範例。步驟一:下載Go語言安裝套件訪問Go官

Windows永久暫停更新,Windows關閉自動更新 Windows永久暫停更新,Windows關閉自動更新 Jun 18, 2024 pm 07:04 PM

Windows更新可能導致以下一些問題:1.相容性問題:某些應用程式、驅動程式或硬體裝置可能與新的Windows更新不相容,導致它們無法正常運作或崩潰。 2.效能問題:有時,Windows更新可能會導致系統變得更慢或出現效能下降的情況。這可能是由於新的功能或改進需要更多資源來運作。 3.系統穩定性問題:某些用戶報告稱,在安裝Windows更新後,系統可能會出現意外的崩潰或藍屏錯誤。 4.資料遺失:在罕見的情況下,Windows更新可能會導致資料遺失或檔案損壞。這是為什麼在進行任何重要的更新之前,請備份您

See all articles