[教程]自建UNPKG镜像指南
本文最后更新于 733 天前,其中的信息可能已经有所发展或是发生改变。

前言

UNPKG,一个使用JavaScript构建,用于加速npm的公共CDN,由于其使用的是cloudflare cdn加速(减速),从而导致其速度还不如本地文件。不过由于其源码已在GitHub上公开,于是我们可以自己搭建一个镜像版的UNPKG来实现真正意义上的加速。

如果你是懒人,博主我已经搭建好了一份:UNPKG镜像 (请善用公益服务)

你需要准备:

  • 一台服务器/VPS(不强制是否安装了Nginx等软件)
  • 有基本的Linux使用常识
  • 善于使用百度进行搜索
  • 一个备案域名(非必要,除非你想接入国内CDN)

开始

配置环境

安装Git:

首先,用ssh等工具进入服务器,输入:

# Cent OS
yum install git wget

# Ubuntu/Debian 系
sudo apt install git wget

安装Node.js:

普通安装方法(假设你当前是在 /root 目录下):

一、 ssh连接linux,输入

wget https://cdn.npmmirror.com/binaries/node/v16.13.2/node-v16.13.2-linux-x64.tar.xz

二、 解压软件包

先使用 ls 命令查看一下文件。发现软件包下载完成后即可开始解压

然后,我们解压文件到当前目录

tar -xvf node-v16.13.2-linux-x64.tar.xz

(PS:在关于路径和文件名时,只要输入了前面几个字符后,按一下tab键,系统会自动补全)

为了接下来的方便,我们可以将文件夹重命名为nodejs

mv node-v16.13.2-linux-x64 nodejs

重命名完后,重要的一步来了:把/root/nodejs/ 目录移动到 /usr/sbin/ 目录下

什么?你竟然不知道 /usr/sbin/ 这个目录是干什么的?

/usr/sbin/ 目录介绍

  /sbin一般是指超级用户指令主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。

那么,学习完之后,我们就开始操作了:

mv /root/nodejs/ /usr/sbin/

# 推荐使用绝对路径,而不是相对路径。执行完成后root路径下的nodejs文件夹会被移动到/usr/sbin/下

三、 配置软链接

为了使nodejs能够全局使用,我们需要配置一下软链接(类似于快捷方式,如果安装的路径在/usr/local/bin/下不需要这一步操作)

# 软链接的命令很简单: ln    -s   源文件   目标路径
ln -s /usr/sbin/nodejs/bin/node /usr/local/bin/
ln -s /usr/sbin/nodejs/bin/npm  /usr/local/bin/

五、 查看安装是否成功

配置了这么久,我们看一下效果怎么样。因为前面我们配的是全局路径,所以应该在任意一个路径执行node或者npm都应该是可行的,我们可以试一下下面两句命令

# nodejs版本
node -v

# npm版本
npm -version

至此,nodejs的安装就完成了。不过对于国内机器,还需要一点额外的操作,那就是换源啦!

# 换源
npm config set registry https://registry.npm.taobao.org

# 检查效果
npm config get registry

经过这一出,国内机器安装npm包的时候就快到飞起啦(并不,速度取决于机器和网络)

什么?你还不会,那就看看下面的宝塔面板安装方法吧

宝塔面板安装方法:

打开软件商店,搜索“nodejs”(如图),点击安装

软件商店

点击“设置”,进入下图页面,先点击“更新版本列表”,等待刷新后找到v16.13.2版本,选择安装,然后等待安装完成(安装时间取决于服务器),配置好后在上面的registry源的选项里改成淘宝源来加速npm包的下载

如图

克隆仓库

一、 从github上的unpkg中拉取源码

git clone https://github.com/mjackson/unpkg.git
# 安装依赖
npm i
# 或者
yarn

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

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

三、 修改代码并执行编译命令:

进入unpkg的根目录,然后转到modules/createServer.js里,删除以下两行代码

import serveStats from './actions/serveStats.js';app.get('/api/stats', serveStats);

Ctrl+S保存之后,回到项目的根目录,执行一下编译命令

npm run build

命令运行完后会在网站根目录生成server.js文件;

四、 启动服务:

npm run start

出现类似以下输出信息则为成功


> start
> set NODE_ENV=production&&node server.js

Server listening on port 8080, Ctrl+C to quit

完事后,放行8080端口(公网访问),然后访问一下,看看成功了没

使用宝塔面板来配置网站

进入面板,点击“网站”,选择上方的“node项目”,点击新建,按照我的配置自己改

配置

访问一个地址测试一下:

http://localhost:8080/browse/@icedesign/[email protected]/

更改npm registry源加速js文件的获取

首先,打开网站根目录的server.js文件,ctrl+f搜索 process.env.NPM_REGISTRY_URL ,将旁边的registry.npmjs.org替换为以下镜像源中的任意一个(自行测试):

# 淘宝源
https://registry.npmmirror.com/

# 腾讯源 (不要使用内网地址)
https://mirrors.cloud.tencent.com/npm/
# 或者
https://mirrors.tencent.com/npm/

# ustc源
https://npmreg.proxy.ustclug.org/

# npm官方源
https://registry.npmjs.org/

我的配置如下:

结尾

经过这样的折腾,你便得到了一个快速的UNPKG镜像,你可以用它来加速你的网站,也可以自己折腾一下server.js的内容,让我们感谢源代码作者的无私开源!

注意事项

如果不对createserver.js里面的内容进行修改,则不能正常的进行后续的步骤,只能用官方的serve命令,同时会出现502错误

Copyright © GBCLStudio.All right reserved.
Original Content Author: Burial0268

评论

  1. 博主 置顶
    Android Chrome 76.0.3809.89
    2年前
    2022-7-03 1:31:37

    如果有什么错误欢迎大家指出,看到后会第一时间修改

    • 博主
      Burial0268
      Windows Edge 103.0.1264.44
      2年前
      2022-7-03 11:30:27

      网络上有部分教程要求删掉creatserver.js中有关api的代码,目前尚不清楚不删除会怎么样,如有bug请火速回复到我邮箱

      • 博主
        Burial0268
        Android Chrome 76.0.3809.89
        2年前
        2022-7-08 15:47:11

        测试出来了,如果删掉的话就不能用start命令,就只能用nodemon来启动,并且貌似会报502错误

本文评论已关闭
下一篇