git clone https://github.com/mjackson/unpkg.git
# 安装依赖
npm install
or 
yarn install

在package.json的script添加start命令:

"scripts": {
    "build": "rollup -c",
    ...
    "watch": "rollup -c -w",
    "start":"export NODE_ENV=production && export PORT=5080 && node server.js"
  },

执行编译命令:

npm run build

unpkg添加私库支持
根目录新建npmConfig.js来存放私库包的命名空间:

//存放私库包的命名空间

export const scopes = [
    '@xianzou','@lijq'
];
/****
 * 私库地址,代理端口会解析url的端口号
 * const privateNpmRegistryURLArr = privateNpmRegistryURL.split(":");
 * const privateNpmPort = privateNpmRegistryURLArr[privateNpmRegistryURLArr.length - 1]
 * 拉取一些npm的包会返回302的情况,unpkg暂时没有处理,会不会和本地的npm源有关?
 ***/
export const privateNpmRegistryURL = 'http://192.168.0.77:7788';

//互联网npm地址
export const publicNpmRegistryURL = 'https://registry.npmmirror.com/';

export default scopes;

接下来就是修改修改modules/utils/npm.js文件了,思路大概如下:
私库地址为http,需要修改https为http;
设置我们私库的端口;
根据npmConfig.js中的scopes去匹配unpkg请求的包,如果是私库的包,就走内网的npm源,如果没有匹配到,就走互联网npm地址;
预览npm.js源码
修改npm.js完毕之后,执行npm run build重新生成server.js文件,然后启动服务:npm run start

以服务形式启动

unpkg.service

[Unit]
Description=Unpkg server
After=network.target
 
[Service]
WorkingDirectory=/opt/unpkg
ExecStart=/opt/npm/node-v16.15.0-linux-x64/bin/npm run start
Restart=on-failure
 
[Install]
WantedBy=multi-user.target