用 Docker 安裝 Verdaccio,建立本機私有 npm

更新於 2023/11/07閱讀時間約 8 分鐘

本篇要解決的問題

最近工作上刻了一套 UI,又寫了幾個可以共用的 JS 檔,問題點在於,有多個專案要用這套 UI,這些 JS 檔也可以直接搬去其他專案上使用。為了讓其他前端方便共用,也為了避免更新一個專案上的 JS 後,還得手動複製貼上到其他專案,就決定找一個可以在本機安裝 npm 的方式,問了 ChatGPT,就得到 Verdaccio 這個答案。

用 Docker 安裝 Verdaccio 的方式很簡單,下幾個命令就可以安裝完成,本篇會簡單記錄這二天使用 Verdaccio 時的一些筆記。


用 Docker 安裝 Verdaccio

安裝 Docker Desktop

首先,請先安裝 Docker Desktop

新增「verdaccio」、「config.yml」

先新增一個資料夾「verdaccio」。

建立一個檔案「config.yml」,因為本篇的目標是同一個區網下的前端大大們能共同使用,所以要先知道自己的本機 IP。

比方 August 的本機 IP 是:192.168.1.154。

那 config.yml 裡面只需要寫上一行:

listen: 192.168.1.154

這樣等等安裝好 Verdaccio 後,就不會是 localhost 而是 192.168.1.154。

安裝 Verdaccio

開啟終端機進入 verdaccio 這個資料夾,輸入:

docker run -it -d --name verdaccio -p 7726:4873 verdaccio/verdaccio

7726 這個 Port 是拿來當範例用的,大家可以換成自己要的 Port。

按下 Enter 後,大概 1 秒的時間,Container 就建立完成:

Verdaccio Container

Verdaccio Container

打開網址,就會看到 Verdaccio 的首頁:

Verdaccio 首頁

Verdaccio 首頁

在首頁上可以看到,建立使用者的命令是:

npm adduser --registry http://192.168.1.154:7726/

終端機輸入並按下 Enter,接著依序要輸入帳號、密碼、信箱,輸入完使用者便建立完成,可以點擊右上角的「LOGIN」進行登入。

以上,Verdaccio 便安裝完成,如果其他前端大大點了網址卻進不去,請記得把防火牆打開。


上傳 package

接著來示範如何上傳 package 到 Verdaccio 上。

比方我們要共用的是 say-hello 這個 package。

建立一個「say-hello」的資料夾。

終端機進入資料夾後,輸入:

npm init -y

yarn init -y

接著會看到新增了一個 package.json 的檔案,內容為:

{
"name": "say-hello",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}

main 的主要 JS 檔可以修改,比方我們如果使用的 JS 檔叫 sayHello.js,那就可以把 index.js 換成 sayHello.js。

這邊 August 就建一個 sayHello.js 的檔案,內容就一個簡單的 console.log:

export const sayHello = ({ name }) => {
return console.log(`Hello ${name}`);
}

最後我們要把這個資料夾發佈到 Verdaccio 上,終端機輸入:

npm publish --registry http://192.168.1.154:7726

再按下 Enter,發佈成功會看到以下訊息:

發佈 package

發佈 package

網頁進到我們的 Verdaccio 頁面,就會看見 package 了:

say-hello 發佈成功

say-hello 發佈成功

更新 package

之後如果 sayHello.js 有更新,發佈上 Verdaccio 的命令是一樣的,但是要記得,package.json 裡的 version 要更新,不然 Verdaccio 會不給上傳。


使用 package

假設今天其他前端大大要安裝 say-hello 這個 package,安裝的命令後面要加上我們的本機 IP:

npm install -D say-hello --registry http://192.168.1.154:7726

yarn add -D say-hello --registry http://192.168.1.154:7726

安裝完後,一樣是會收在 node_modules 的資料夾中,我們簡單的 import 進來就可以使用:

import { sayHello } from "say-hello";

sayHello({ name: 'August' });

.npmrc

如果只想要跟一般安裝 npm package 一樣,不想每次後面都多輸入「–registry http://192.168.1.154:7726」這一串,方法很簡單。

在要使用 Verdacco 的專案根目錄下,新增一個檔案「.npmrc」,裡面寫上一行:

registry=http://192.168.1.154:7726

這樣預設我們使用 npm install 或 yarn add 時,會先從我們的本機 IP 去找,找不到會再去 npm 官方資源上找。


刪除 package

要刪除 package,August 的方式是……直接從 Docker Desktop 的介面上,點進 Container 去刪,像這樣:

刪除 package

刪除 package

進到 Container 後,點擊「Files」看原始檔,路徑是:

verdaccio/storage/data/package名稱

對著 package 的資料夾點右鍵,就會出現「Delete」的選項,點擊後就刪除了。


修改 config.yml

config.yml 可以修改的東西很多,詳情可見官方文件:Configuration File

這邊示範怎麼修改頁面的 title、logo、favicon。

一樣,直接從 Docker Desktop 的介面上,點進 Container 去改,像這樣:

修改 config.yaml

修改 config.yaml

資料夾路徑是「verdaccio/conf/config.yaml」,對檔案點右鍵,會出現「Edit file」,點擊後就可以編輯檔案,等我們改完,儲存後,再按下右上角 Restart 的按鈕,重新整理頁面就可以看到。

config.yaml 的檔案,找到 web 開頭的那行:

找到 web

找到 web

config.yaml 上所有可設定的東西,註解上都有說明了,這邊示範修改 title 跟加上 logo、favicon:

web:
title: Lets Write npm
logo: logo絕對路徑
favicon: favicon絕對路徑

存檔後再按下 Restart,回到 Verdaccio 的頁面,就會看到改變了:

修改 title、logo、favicon

修改 title、logo、favicon


改變 CSS

因為實際使用時,通常會寫 README.md 檔案來說明,可是 August 看到有程式碼的部份是這樣:

暗迷摸的程式碼

暗迷摸的程式碼

一整個就是暗迷摸的程式碼,不說以為是在辨識工程師是不是色盲。

研究了一下怎麼改變 CSS,問了 ChatGPT、Bard 後,好像很麻煩,畢竟也只想改變一個變數而已,為了這一行而花時間裝 Plugin 很費工,就決定用最簡單的方式……改 config.yaml。

一樣到我們上一步進到的 config.yaml 檔,找了一下,可以接受 <style> 標籤的,是 scriptsBodyAfter 這個地方,因此寫上:

scriptsBodyAfter:
- '<style>@media (prefers-color-scheme: dark) { .markdown-body { --color-canvas-subtle: #f1f1f1; } }</style>'

存檔後按下 Restart,一切又重見光明了:

成功改變 CSS 變數

成功改變 CSS 變數

avatar-img
9會員
19內容數
沙龍到底是…做什麼用的勒?
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Let's Write 的沙龍 的其他內容
本篇大綱:本篇要解決的問題。取得 Postman Collection Access Key。Google Apps Script 上寫備份程式碼。設定自動備份。
這篇文章教你如何在本機使用 Gitea 架設 Git Server。內容涵蓋了安裝 Docker、設定和安裝 Gitea 的 dokcer-compose.yml、Gitea 的安裝流程,以及如何刪除安裝的 Gitea。文章也包含了一個 Docker 的彩蛋,教你如何清理安裝或未清理的緩存。
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
探討如何免費建立自己的網站,結合 WordPress 和 Cloudflare Pages。文章涵蓋從本機安裝 WordPress、產出靜態檔案,到將檔案部署到 Cloudflare Pages 的完整流程,並探討其優點和缺點。
探索如何使用 OneDev 在本機快速架設 Git Server。本文詳細介紹了安裝 OneDev 和 Docker 的步驟,並提供了實用的圖片和說明,幫助你輕鬆在本機建立和管理 Git Server。
探索 Google Sheets API 在 Google Apps Script 上的實用操作和技巧。本文詳細解釋了試算表和工作表的操作、好用函式和原始碼分享,是想要深入了解 Google Sheets API 應用的理想指南。
本篇大綱:本篇要解決的問題。取得 Postman Collection Access Key。Google Apps Script 上寫備份程式碼。設定自動備份。
這篇文章教你如何在本機使用 Gitea 架設 Git Server。內容涵蓋了安裝 Docker、設定和安裝 Gitea 的 dokcer-compose.yml、Gitea 的安裝流程,以及如何刪除安裝的 Gitea。文章也包含了一個 Docker 的彩蛋,教你如何清理安裝或未清理的緩存。
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
探討如何免費建立自己的網站,結合 WordPress 和 Cloudflare Pages。文章涵蓋從本機安裝 WordPress、產出靜態檔案,到將檔案部署到 Cloudflare Pages 的完整流程,並探討其優點和缺點。
探索如何使用 OneDev 在本機快速架設 Git Server。本文詳細介紹了安裝 OneDev 和 Docker 的步驟,並提供了實用的圖片和說明,幫助你輕鬆在本機建立和管理 Git Server。
探索 Google Sheets API 在 Google Apps Script 上的實用操作和技巧。本文詳細解釋了試算表和工作表的操作、好用函式和原始碼分享,是想要深入了解 Google Sheets API 應用的理想指南。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
在應用行為分析的重點,有提到〝獎勵品〞的部分。 因此,只要是根據自閉症者的喜愛物品,做最初的獎勵品。 可以自製代幣 不管是用畫的、用蓋印章的,甚至,用魔鬼粘結合,都可以做代幣。 用一對一的方式,以簡單具體的指令為主。 剛開始,可以藉由觀察自閉症者需要訓練的項目,做簡單的評估。 在見到自閉症者需要訓練
Thumbnail
自己在IG貼文用手機有時候,貼圖想要改背景的時候會用到發火!就會想使用電腦方便許多~如果你是IG重度使用者,可以參考這篇教學。 當你使用Google Chrome瀏覽器電腦版登入IG帳號之後會長這樣~ 登入IG帳號之後在Google Chrome瀏覽器的頁面上按下鍵盤快速鍵 :Windows是「 C
Thumbnail
許多人越來越注重衛浴空間的規劃,今天水電師傅要聊聊馬桶安裝,究竟馬桶安裝有哪一些工法?不同馬桶安裝的工法有什麼區別以及優缺點? 馬桶安裝可以分成濕式以及乾式,以下為大家說明這些工法的特色以及優缺點。 乾式安裝是什麼 乾式安裝有什麼優缺點 濕式安裝是什麼 濕式安裝有什麼優缺點
Thumbnail
交友江湖走跳,除了靠顏值,也靠文案力。請不要小看文字的力量,在短短一張頁面的自我介紹,這一兩百字,可能就決定對方是否與你連結,或者陰陽兩隔。無論你使用哪種交友軟體,大致上不脫三個問題自我介紹:我是誰?我喜歡?我希望的約會對象?現在拿出你的筆記,記下文案三個大原則:真實、誠懇、具體。
我在開發的時候有碰到部屬伺服器上的困難,我用 Docker 來解決我的困境,文章會分為以下幾個章節: 我為什麼要用 Docker?(這篇文章) Docker 的初步認識。 Docker Hello World。 Docker Services。 Docker Swarm。
Thumbnail
夾娃娃 Youtuber 對夾娃娃市場最大的貢獻,就是教會夾娃娃客群以及潛在客群「理所當然的失敗」!---行銷練功房
Thumbnail
第一次近距離接觸文強,是2015年報名了「金曲夏令營」,他是講師之一。 那兩天引起最多笑聲的便是廖文強「創作歌手的音樂探索」的課程,他對自己的笑果感到得意,不忘帶到2011年發行的專輯《至少很好笑》。 有時看著身邊習慣扮小丑逗旁人開心的朋友,我總是好奇他們的內心真的充滿陽光面,沒有片刻的陰雨期嗎?
Thumbnail
<p>沒有現代完備的技術,面對天災和艱困的生活環境,先人還是必須設法生活。水能供人體所需,柴火能將生食轉為熟食,溫飽三餐。水和火,是飲食的基礎,也是探究早期鄉村生活樣貌的線索。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少因
在應用行為分析的重點,有提到〝獎勵品〞的部分。 因此,只要是根據自閉症者的喜愛物品,做最初的獎勵品。 可以自製代幣 不管是用畫的、用蓋印章的,甚至,用魔鬼粘結合,都可以做代幣。 用一對一的方式,以簡單具體的指令為主。 剛開始,可以藉由觀察自閉症者需要訓練的項目,做簡單的評估。 在見到自閉症者需要訓練
Thumbnail
自己在IG貼文用手機有時候,貼圖想要改背景的時候會用到發火!就會想使用電腦方便許多~如果你是IG重度使用者,可以參考這篇教學。 當你使用Google Chrome瀏覽器電腦版登入IG帳號之後會長這樣~ 登入IG帳號之後在Google Chrome瀏覽器的頁面上按下鍵盤快速鍵 :Windows是「 C
Thumbnail
許多人越來越注重衛浴空間的規劃,今天水電師傅要聊聊馬桶安裝,究竟馬桶安裝有哪一些工法?不同馬桶安裝的工法有什麼區別以及優缺點? 馬桶安裝可以分成濕式以及乾式,以下為大家說明這些工法的特色以及優缺點。 乾式安裝是什麼 乾式安裝有什麼優缺點 濕式安裝是什麼 濕式安裝有什麼優缺點
Thumbnail
交友江湖走跳,除了靠顏值,也靠文案力。請不要小看文字的力量,在短短一張頁面的自我介紹,這一兩百字,可能就決定對方是否與你連結,或者陰陽兩隔。無論你使用哪種交友軟體,大致上不脫三個問題自我介紹:我是誰?我喜歡?我希望的約會對象?現在拿出你的筆記,記下文案三個大原則:真實、誠懇、具體。
我在開發的時候有碰到部屬伺服器上的困難,我用 Docker 來解決我的困境,文章會分為以下幾個章節: 我為什麼要用 Docker?(這篇文章) Docker 的初步認識。 Docker Hello World。 Docker Services。 Docker Swarm。
Thumbnail
夾娃娃 Youtuber 對夾娃娃市場最大的貢獻,就是教會夾娃娃客群以及潛在客群「理所當然的失敗」!---行銷練功房
Thumbnail
第一次近距離接觸文強,是2015年報名了「金曲夏令營」,他是講師之一。 那兩天引起最多笑聲的便是廖文強「創作歌手的音樂探索」的課程,他對自己的笑果感到得意,不忘帶到2011年發行的專輯《至少很好笑》。 有時看著身邊習慣扮小丑逗旁人開心的朋友,我總是好奇他們的內心真的充滿陽光面,沒有片刻的陰雨期嗎?
Thumbnail
<p>沒有現代完備的技術,面對天災和艱困的生活環境,先人還是必須設法生活。水能供人體所需,柴火能將生食轉為熟食,溫飽三餐。水和火,是飲食的基礎,也是探究早期鄉村生活樣貌的線索。</p>