最近对博客进行了一些调整和优化,使用的 Hexo 是基于 Nodejs 的框架,在此记录其中的一些心得和才过的坑。

依赖库的升级

虽说依赖库完全不更新也不会导致可用性的问题,但更新往往能带来一些新的功能和速度上的提升。npm-check 可统一管理项目依赖,使用比较方便。安装命令如下:

1
sudo npm i -g npm-check

更新依赖库分为全局依赖库和项目的依赖库,两者使用上的区别在于更新全局依赖需要加 -g 的参数,使用比较简单:

1
npm-check -u

接着会出现一个简单的交互界面,根据提示进行即可。

Nodejs 多版本管理

不久前 Manjaro 自带的 Nodejs 版本升级到了 14,导致 hexo 在使用过程中总会出现一些警告。警告当然没有什么大不了,可是一旦部署就会报错,百度得知 hexo 暂时对最新的 Nodejs 支持有问题。没办法,只能使用低版本的 Nodejs 如 12、13 等。为了不破坏系统软件依赖,我选择配置多个 Nodejs 版本。

而说起 Nodejs 的多版本管理方案,就不得不提 nnvm 这两种方案了。虽说都是多版本管理方案,可是实现方式完全不同,也有着各自的优缺点。

n

n 是是一个 npm 包,依赖于 Node 环境。首先安装 n :

1
sudo npm i -g n

n 预设了两种版本供我们使用,分别是 lateststable,查看版本号:

1
2
3
n --latest && n --stable
14.4.0
12.18.0

可见 stable 的版本符合 hexo 的要求,使用一下命令安装:

1
n stable

当然 n 还能安装任意版本的 Nodejs,直接跟版本号即可。选择版本更加简单,直接运行 n 不加任何参数,会有一个交互的界面用于选择。

nvm

原本觉得只使用 n 就够了,可是我的 hexo 是同时部署在 winlinux 下的,nwin 下无法使用,无奈只能另寻他法。

n 不太一样,nvm 不需要预先安装 Nodejs,也就是说需要卸载已经存在的版本。Windows 版本的下载地址如下: nvm,有不需要安装的压缩包版本和安装包版本可供选择,我这里选择下载安装包;Manjaro 下直接无脑 yay,反正有 Aur,但安装后需要修改 .zshrc 或者 .bashrc,添加初始化 nvm 的条目,具体取决于使用的 shell 类型。

nvmnvm-windows 的命令有一定的区别,但几条主要的命令是相同的。

安装指定的版本:

1
nvm install <version>

使用指定的版本:

1
nvm use <version>

查看已经安装的版本:

1
nvm ls

删除某个版本:

1
nvm rm <version>

两者对比

两者作为 Nodejs 版本管理工具,有一下异同:

  1. n 依赖 Nodejs,是一个 npm 包;nvm 不依赖 Nodejs

  2. n 不支持 Windows 环境,而 nvmnvm-windows 可以支持 Windows

  3. nvm 每个环境的模块单独存储,而 n 所有环境共享模块。这意味着 nvm 需要占据更多的磁盘空间,各个环境隔离更加充分,库不会相互影响。

  4. nNodejs 相互依赖,卸载时比较麻烦,至少在 Linux 下是这样的。

最终我还是选择使用 nvm