迁移Hexo至新的设备
因为前些日子重装系统,十分彻底,导致我的Hexo环境没了,代码托管在Github,所以代码没事,然后今天终于有兴致迁移一下Hexo博客了。
与其说是迁移不如说是重新安装Hexo的运行环境,因为我代码保存在仓库,所以迁移博客,先拉去仓库的文件,同理本地迁移的话,就是复制粘贴。
1.安装Git
网上一些大佬都用的Git bash,因为一开始我比较菜鸡,所以我从Github Desktop入手的,现在也不想换,用习惯了,可能回头没有图形化平台会尝试去使用Git bash。
所以网上的配置是重新安装Git并配置无密pull和push
但是如果你使用的是图形化的话,就直接登录,然后把仓库clone回来。
全部点点点的操作我就不截图了。。。
2.安装Node.js
Hexo基于Node.js 所以运行环境需要安装Node.js
选择windows安装包下载安装,然后使用cmd验证是否添加环境变量。
1 |
|
分别检测node和npm是否正常。
3.复制文件
这个步骤需要舍弃一些不需要的文件。
需要保留的:
- _config.yml:站点配置
- package.json:说明使用那些包(只包含大版本号,)
- package-lock.json:(个人觉得可以保留)是之前安装包的版本和依赖的完整备份
- scaffolds:文章的模板
- source:自己写的博客文件
- themes:主题
- .gitignore:限定在提交的时候哪些文件可以忽略
需要删除的:
- .git:这是github用于表示本地库的文件,删除不影响博客
- node_modules:在用
npm install
会重新生成 - public:
hexo g
会重新生成 - .deploy_git:在使用hexo d时也会重新生成
- db.json文件
这里我大概删除了.git和node_modules还有一些其他的上古遗物
4.运行npm install
因为有package.json和package-lock.json两个文件的存在,所以npm知道需要安装什么包。
我觉得解释一下这两个文件也比较重要,虽然这一步只需要跑一下npm install
就好了。
- package.json:记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,
- package-lock.json:是在
npm install
时候生成一份文件。记录了node_modules目录下所有模块(包)的名称、版本号、下载地址、及这个模块又依赖了哪些依赖。
这两者的区别在于:
npm5以前:
- 没有package-lock.json这个文件。package.json文件会记录你项目中所需要的所有模块。当你执行npm install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新。
- 因为package.json只能锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,所以你每次重新npm install时候拉取的都是该大版本下面最新的版本。一般我们为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,这样很容易出现问题,所以package-lock.json就是来解决包锁定不升级问题的
- 另外,package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。
npm5以后:
- package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。
- 因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用npm install packagename@x.x.x(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。
package-lock.json的作用:
- 如果重新 npm install 的时候以及当node_modules文件夹并不存在或被删除时,需要用到npm install重新装载全部依赖时,通过package-lock.json可以直接表明下载地址和相关依赖,就无需再从package.json逐个分析包的依赖项,因此会大大加快安装速度,package-lock.json目的就是确保所有库包与你上次安装的完全一样。
1 |
|
5.安装其他包
1 |
|
实测在安装baidu站点地图的时候遇到了奇怪的问题,只是我也看不太懂npm的报错,所以有能力的人可以尝试解决。建议不要安装。
这边安装完本地测试一下,hexo clean
, hexo g
, hexo s
。
6.然后吧我就准备上传了
测试完成没有问题,就是在安装baidu站点地图插件的时候报了很多错,有毛病,这个等我回头再研究。
在挖一个坑在这。
目前有两个坑,npm的管理工具和评论系统的升级。
据我观测waline好像被墙了。。。