文章目录[隐藏]
前言
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错误
如果有什么错误欢迎大家指出,看到后会第一时间修改
网络上有部分教程要求删掉creatserver.js中有关api的代码,目前尚不清楚不删除会怎么样,如有bug请火速回复到我邮箱
测试出来了,如果删掉的话就不能用start命令,就只能用nodemon来启动,并且貌似会报502错误