Skip to content

long36708/unpkg-lzwme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UNPKG (中文版)

此分支的目标是:

  • 更易于自托管 Unpkg
  • 保持与上游兼容
  • 保持依赖项更新
  • 不进行功能更改或添加新功能

UNPKG 是一个快速、全球性的内容分发网络,提供 npm 上的所有内容。

开发

准备工作:

git clone https://github.com/lzwme/unpkg.git
cd unpkg
pnpm i
cp .env.sample .env.local # 编辑 env.local 配置用于本地开发

开发模式:

pnpm watch
pnpm serve

构建和部署

cp .env.sample .env.prod # 编辑 env.prod 配置用于生产环境
set NODE_ENV=production # 或 staging
pnpm build
pnpm pack

将会生成一个类似 unpkg-<version>.tgz 的文件。 使用 pm2 在您的服务器上部署:

tar zxvf unpkg-<version>.tgz
cd package
# npm i --omit dev
pnpm i -P
pm2 -n unpkg start.js

1. tar zxvf unpkg-<version>.tgz

  • 作用:解压一个 .tgz(即 .tar.gz)格式的压缩包。
  • 参数说明
    • z:使用 gzip 解压;
    • x:解包(extract);
    • v:显示详细过程(verbose);
    • f:指定文件名(后面紧跟文件名)。
  • 结果:会解压出一个目录(通常叫 package/),里面包含项目的源代码和 package.json 等文件。

注:<version> 是占位符,实际文件名类似 unpkg-1.2.3.tgz


2. cd package

  • 作用:进入解压后生成的 package 目录。
  • 这是因为 npm/pnpm 打包时默认会把内容放在 package/ 文件夹中(尤其是通过 npm pack 生成的 .tgz 包)。

3. # npm i --omit dev

  • 作用:这是一行被注释掉的命令(以 # 开头,不会执行)。
  • 如果取消注释,它的意思是:
    • 使用 npm 安装依赖;
    • --omit dev 表示跳过开发依赖(devDependencies),只安装生产依赖(dependencies),适用于生产环境部署,减少安装体积和时间。

这里被注释掉了,说明后续改用 pnpm。


4. pnpm i -P

  • 作用:使用 pnpm 安装依赖。
  • 参数 -P--prod 的简写,等价于 --production,即只安装生产依赖(跳过 devDependencies)。
  • 与上面注释掉的 npm i --omit dev 功能类似,但使用的是 pnpm 包管理器(更快、更节省磁盘空间)。

5. pm2 -n unpkg start.js

  • 作用:使用 PM2(Node.js 进程管理工具)启动应用。
  • 参数说明:
    • -n unpkg:给这个 PM2 进程起一个名字叫 unpkg,方便后续管理(如 pm2 restart unpkg);
    • start.js:要执行的入口文件(通常是项目根目录下的启动脚本)。
  • 效果:PM2 会在后台运行该 Node.js 应用,并提供进程守护、日志管理、自动重启等功能,适合生产环境。

总结流程:

  1. 解压发布的 .tgz 包;
  2. 进入解压后的项目目录;
  3. 使用 pnpm 安装仅生产环境所需的依赖;
  4. 用 PM2 启动服务,命名为 unpkg,入口为 start.js

这是一种典型的 Node.js 项目生产部署流程

使用 Docker

docker pull lzwme/unpkg
docker run -d -p 8080:8080 -e NPM_REGISTRY_URL=https://registry.npmjs.org -e ORGIN=* lzwme/unpkg

Docker部署

使用docker部署的话,上述构建部署可忽略,直接使用docker方式部署(更推荐)

docker image制作

docker build . -t longmo/unpkg

docker image发布

# 内部私有docker registry
docker tag longmo/unpkg ${私有docker仓库目录}/unpkg:latest
docker push ${私有docker仓库目录}/unpkg:latest

docker image使用

# 拉取镜像
docker pull ${私有docker仓库目录}/unpkg:latest

docker 启动配置

启动可直接修改run-ucdn.sh进行快速docker启动或者,或者自行编写启动脚本

方式一:

# 直接修改使用已配置脚本修改启动unpkg方式
vim  run-ucdn.sh
#  -p 3888:8080 \
# -e NODE_ENV=production \
# -e NPM_REGISTRY_URL=https://registry.npmjs.org \
# -e ORIGIN=http://127.0.0.1:4873 \
# ${私有docker仓库目录}/unpkg:latest
source run-ucdn.sh

方式二:

docker run -d -it --name ucdn --restart=always \
-p 3888:8080 \
-e NODE_ENV=production \
-e NPM_REGISTRY_URL=https://registry.npmjs.org \
-e ORIGIN=http://127.0.0.1:4873 \
harbor.***.com/base_image/unpkg:latest

默认端口:容器8080,宿主机3888(根据自己实际情况调整) 默认公网NPM地址:NPM_REGISTRY_URL=https://registry.npmjs.org 默认私有NPM地址:ORIGIN=http://127.0.0.1:4873(根据自己实际私有库调整)

使用 .env[.prod|.local] 配置

更多详情请查看 .env.sample 文件。

# 私有 registry url 配置
NPM_REGISTRY_URL=https://registry.npmjs.org

  # 您的 unpkg 网站 url
ORIGIN=https://npmcdn.longmo.me
  # 监听端口,默认为 8080
PORT=8080

  # 启用调试
  # DEBUG=1

  # Google Analytics MEASUREMENT_ID,可以设置为空来禁用它
GTAG_MEASUREMENT_ID=UA-140352188-1

# ENABLE_CLOUDFLARE=1
# [email protected]
# CLOUDFLARE_KEY=test

环境变量说明

  • ORIGIN: 设置 unpkg 服务的基础 URL,默认为 https://unpkg.com,可用于自定义部署域名
  • NPM_REGISTRY_URL: npm registry 地址,默认为 https://registry.npmjs.org
  • PORT: 服务监听端口,默认为 8080
  • DEBUG: 启用调试模式
  • GTAG_MEASUREMENT_ID: Google Analytics ID,用于网站分析
  • ENABLE_CLOUDFLARE: 启用 Cloudflare 集成
  • CLOUDFLARE_EMAIL: Cloudflare 账户邮箱
  • CLOUDFLARE_KEY: Cloudflare API 密钥

文档

请访问 UNPKG 官方网站 了解更多使用方法。

赞助商

我们的赞助商和捐助者列表在 SPONSORS.md 文件中。

About

fork from lzwme/unkpg https://github.com/lzwme/unpkg and learn from https://github.com/caser993/unpkg

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Contributors 28

Languages