搜尋
首頁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表示對指定目錄下所有的子目錄和檔案也都採取同種操作。 ######
 
首先,透過npm config get prefix取得npm所在目錄的路徑,例如像這樣:
在命令列輸入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
Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

See all articles

熱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

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

熱門文章

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境