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

更新於 發佈於 閱讀時間約 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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
MacOS 請先安裝「Homebrew」。開啟「終端機」,輸入底下指令: brew cask install​ docker 載入Docker App後,點擊Next,輸入MacOS登入密碼。安裝完成後,輸入底下指令查看版本資訊: ​docker -v Linux 開啟「終端機
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
當你安裝完docker,並且設定好所有相關程序後。你正要使用docker去進行操作,讓專案可以在容器哩,方便平台移轉、備份、共用等等等等等;如果你遇到CUDA docker runtime 的問題時,這篇正適合你閱讀。 開始之前,如果你要參考怎麼安裝docker,設定docker環境,請參考:
將使用者加入Docker群組 sudo groupadd docker sudo usermod -aG docker $USER 設定開機自動啟動Docker服務 sudo systemctl enable docker sudo systemctl start docker 試跑
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
為什麼要用Docker安裝? Docker是一個容器化平台, 就類似於我們早期虛擬機的VMWare、Virtual Box…等, 虛擬機平台一般, 只是面向的是伺服端, 供企業快速、簡單、輕量的佈署開發完成的程式軟體, 並將相關的環境依賴皆封裝成一包所謂的映像檔(image), 透過這樣的方式減少
Thumbnail
MacOS 請先安裝「Homebrew」。開啟「終端機」,輸入底下指令: brew cask install​ docker 載入Docker App後,點擊Next,輸入MacOS登入密碼。安裝完成後,輸入底下指令查看版本資訊: ​docker -v Linux 開啟「終端機
Docker是一種容器化技術,可以將應用程式及相關依賴項目打包到一個容器中。這篇文章介紹了安裝Docker的步驟,以及幾個比較偏向使用者的應用程式。
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
當你安裝完docker,並且設定好所有相關程序後。你正要使用docker去進行操作,讓專案可以在容器哩,方便平台移轉、備份、共用等等等等等;如果你遇到CUDA docker runtime 的問題時,這篇正適合你閱讀。 開始之前,如果你要參考怎麼安裝docker,設定docker環境,請參考:
將使用者加入Docker群組 sudo groupadd docker sudo usermod -aG docker $USER 設定開機自動啟動Docker服務 sudo systemctl enable docker sudo systemctl start docker 試跑
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 大家好我們今天要來教 Docker 這項技術,什麼是 Docker ? Docker 可以幫助我們做什麼事情 ? Docker 是一項容器化技術,他可以降低我們在佈署 App 時,讓我們可以有效的分配作業系統資源,降低佈署作業成本,現在讓我們來了解 Docker 要解決的問題 傳統佈署遇