前言

在搭建Hexo博客时,每个教程的第一步都会让你安装环境依赖,而第一个安装的便是Node.js,那么到底什么是Node.js,它在我们的Blog搭建中起了什么作用?实际上,Node.js是一个开源且跨平台的JavaScript运行环境,有了Node,Hexo才能运行、装插件、生成网站。

Node的作用

  1. 运行
    hexo int / clean / new / generate / server / deploy 都是Node程序(CLI),没有Node,这些命令就不能执行。
  2. 包管理
    主题、渲染器、部署器(如 hexo-deployer-git)都通过 npm 安装到 node_modules/,版本记录在 package.json
  3. 构建和渲染
    source/ 里的 md、纯文本、图片等,用各类 Node 插件(如 Markdown renderer、Sass/Less、MathJax/KaTeX 等)渲染成静态文件输出到 public/
  4. 本地预览服务器
    hexo s 运行的本地服务是用 Node 跑的,便于预览与热更新。
  5. 自动化与部署
    部署器(如 hexo-deployer-git、rsync、FTP 等)是 Node 脚本,负责把 public/ 推到 GitHub Pages/Vercel/CloudFlare Pages 等。

Node不做什么?

  • 不负责线上运行你的站点内容。最终网站是纯静态文件,放在 GitHub Pages/Vercel/Clodflare Pages就能被任何服务器/CDN直接访问。
  • 只有在构建和部署阶段需要 Node(在本地)。

什么是Npm?

  • Node.js是让JavaScript在电脑或者服务器运行的引擎。
  • npm(Node Package Manager)是Node生态的包管理器 + 仓库,用来安装/更新/管理各种 Node 包(如 Hexo、插件等)。npm本身运行在Node上,安装主题/插件都是通过npm完成的。

在Hexo场景下的常用命令

1
2
3
4
5
6
7
node -v     # 看 Node 版本
npm -v # 看 npm 版本

npm i -g hexo-cli # 全局安装 Hexo 命令行(一次即可)
npm i # 安装当前项目依赖(根据 package.json)
npm i <包名> -D # 安装开发依赖(例如主题工具、构建工具)
npm uninstall <包名> # 卸载

Npx命令:不用全局安装也可以跑命令

  • 可以只在项目里安装Hexo,然后用npx调用本地版本:
1
2
3
npm i hexo --save
npx hexo g
npx hexo s
  • 与npm对比:
    • hexo g 需要通过全局安装hexo-cli
    • npx hexo g 是直接用项目里node_modules/.bin 里的可执行文件
  • 可能使用起来还是全局安装然后用npm命令更方便一点,毕竟我们都是个人搭建,基本不存在版本冲突的问题。

npm下载换源

npm下载使用的默认源在国内的下载速度会巨慢无比,建议更换成国内的镜像源

  • 查看自己的下载源:
1
npm config get registry

默认是指向https://registry.npmjs.org/就是官方源。

  • 更换源:
1
npm config set registry https://registry.npmmirror.com/

更换为淘宝的镜像源https://registry.npmmirror.com/,还有很多其他的镜像源可供选择,可以视情况去选择更换,这里就不再展示。

  • nrm
    nrm是NPM registry manager,是管理npm源的命令行工具。
1
npm i -g nrm

通过nrm ls会列出一些可选择的公有源:

1
2
3
4
5
6
7
8
9
$ nrm ls

npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
huawei ------- https://repo.huaweicloud.com/repository/npm/

通过nrm use <源的名称>,配置为对应的registry url。

1
2
3
$ nrm use taobao

Registry has been set to: https://registry.npmmirror.com/

nrm 还有还有一些其他功能,可以去自行查阅并使用。

总结

  • Node(LTS Long-Term Support 提供统一的运行时;
  • npm 负责依赖与脚本;
  • nrm 一键切换 npm 源,解决下载慢/超时。