升级icarus到5.x

升级icarus到5.x

博客搭了很久,也没写多少东西,写东西其实很耗费精力。文没写几篇,机器人倒是天天给我发邮件说依赖炸了依赖炸了,记得曾升级过一次主题到5.x,直接全炸了,后来实在没什么时间,于是版本回退万事大吉,今天再重新更新一下。

源码升级

因为原本我在4.X的主题版本魔改太多,所以只能克隆源码升级,如果用 NPM 大概率问题多多。不过可以记录一下。

npm

npm 无非就是哪里依赖炸了装哪里。不是魔改的博客完全可以一用,可惜我的已经用面目全非脚踹过了。仅随手写个流程。

例行公事先 npm -vnode -v V一下看看版本,说不定整台电脑环境最老的就是这俩破烂了。太老了就更一更,更炸了就回滚,基操每次都得来一遍,菜狗的基本修养不能落下。

然后一个 npm list --depth=0 看看都装了些啥。不出意外肯定有意外。

npm ERR! peer dep missingUNMET PEER DEPENDENCY (父依赖缺少了这个依赖的对等版本)之类的不一个接一个地来都不算什么年久失修的破烂博客项目了,无关紧要的包就不用管了,只要能跑起来,满屏的 ERR! 都是小意思,WARN 就更不用管了哈哈哈。

然后 npm info xx 看看要装的包的详细信息,然后 npm view xx version 看看还有点啥好的版本整一整,装最新的大概率在 hexo g 就全部爆炸。

然后 npm install --save xx@5.1.0 xxx@2.0.0 什么的装好收工。(好像 npm 版本比较新的都可以省略 –save 了,已经默认。)

源码

icarus 老文档是这么写的

1
git clone https://github.com/ppoffice/hexo-theme-icarus.git themes/icarus -b <version number> --depth 1

我直接下了包放到 blog\themes\icarus

到这一步以后,再 hexo cleanhexo g 搞一搞,报什么依赖出问题就装一个。完事。

重新魔改

虽然我的魔改都有记录备份,但是毕竟是大版本更新,文件结构和代码内容还是有很多小改动的,直接复制粘贴就炸了。与其一个个翻更改,不如重新魔改一遍。

参考本博客两篇主要文章《Hexo-icarus主题黑夜模式以及背景》《hexo博客改进记录》

完成上一步源码升级以后,先本地 hexo g s 看看有什么缺失,基本配置、文章、额外页面是完全没有受到影响的,也就是还能跑。(有那么一瞬间我都不想改了),夜间样式、图标、自定义的组件大小得全部重来。

按部就班来就按顺序看,直接一波改完直接目录跳到总结那里开始即可。

经过修改的文件以及位置

以我的前端水平,不记一下,下次大更新必挂,还是一劳永逸好。

文件基本都是在 bolgPath\themes\icarus 里,既然是源代码升级的方式 bolgPath\node_modules 里的 hexo-theme-icarus 就是图一乐,拿来看看依赖都勉强。

以下、增加的直接增,修改的都是小改动,覆盖修改的其实就是大改,除非大版本更新有影响,不然都直接覆盖比较省事

夜间以及背景

  • 夜间模式

    icarus/source/js 增加 night.js

    icarus/source/css增加 night.styl

    icarus/source/css修改 default.styl ,末尾新增一行 @import 'night'

    icarus/layout/common修改 scripts.jsx<Fragment> 标签间添加 <script> 标签索引 <script src={url_for('/js/night.js')} defer={true}></script>

    icarus/layout/common覆盖修改 navbar.jsxfooter.jsx

  • 夜间背景

    icarus/source/js 增加 universe.js

    修改 icarus/layout/layout.jsx ,添加canvas 和星空绘图的script 路径。(参考夜间模式改动博文)

    1
    2
    3
    4
    5
    6
    7
    8
    <body class={}>
    <script ......></script>
    <canvas id="universe"></canvas>
    ...
    ...
    ...
    <script type="text/javascript" src="/js/universe.js"></script>
    </body>
  • 日间背景

    图片在 icarus\source\img 覆盖修改 整个文件夹,网页图表也全在这个文件夹。

    icarus\include\style修改 base.stylebody

    1
    2
    3
    4
    5
    body
    /*添加下列代码*/
    background: url(../img/mount.jpg) no-repeat
    background-attachment: fixed
    background-size: cover

其他魔改

  • 固定导航栏

    icarus\source\css 覆盖修改 style.styl

  • 修改组件、主页面宽度

    icarus/include/style 复制增加 mystyle 文件夹

    上一步在固定导航栏已经覆盖了 style.styl ,就不用动了

  • 时间轴生肖图标

    icarus\source 复制增加 font 文件夹

    上两步已经覆盖了 style.styl 和复制了 mystyle 文件夹,不用改动

    icarus\layout覆盖修改 archive.jsx

    颜色已经在新增的 mystyle\timeline.stylnight.styl 改好。不用管。

  • addtoany的图标修改

    themes\icarus\layout\share 复制增加 addtoany.jsx

    参考 Icarus用户指南 - 分享按钮

总结

增加与覆盖

icarus/source/js 增加 night.js

icarus/source/css增加 night.styl

icarus/layout/common覆盖修改 navbar.jsxfooter.jsx

icarus/source/js 增加 universe.js

图片在 icarus\source\img 覆盖修改 整个文件夹,网页图表也全在这个文件夹。

icarus\source\css 覆盖修改 style.styl

icarus/include/style 复制增加 mystyle 文件夹

icarus\source 复制增加 font 文件夹

icarus\layout覆盖修改 archive.jsx

themes\icarus\layout\share 复制增加 addtoany.jsx

修改

icarus/source/css修改 default.styl ,末尾新增一行 @import 'night'

icarus/layout/common修改 scripts.jsx<Fragment> 标签间添加 <script> 标签索引 <script src={url_for('/js/night.js')} defer={true}></script>

修改 icarus/layout/layout.jsx ,添加canvas 和星空绘图的script 路径。(参考夜间模式改动博文)

icarus\include\style修改 base.stylebody

完成

完成后本地测试、上传即可。

1
2
3
git add -A
git commit -m "upgarde_icarus_theme"
git push
作者

ivy

发布于

2023-01-17

更新于

2023-03-25

许可协议

CC BY-NC-SA 4.0

评论