Oct1a

自动化助手帮助一键快速运行hexo服务

因最近使用utools工具比较频繁,插件有自动化工具,刚好想解决每次一个比较繁琐的问题,hexo的启动已经一些命令,通常是要找到自己的博客文件路径,进行打开终端运行,有点麻烦。本次借用utools的自动化助手插件解决该问题。

新建脚本

image-20210816114029358

启动hexo服务

服务启动,端口改为80,自动打开默认浏览器

require('child_process').spawn('start', ['cmd', '/k', `"cd /d E:\hexo & hexo s -p 80 -o" `], { shell: 'cmd.exe', detached: true })

hexo生成静态文件

require('child_process').spawn('start', ['cmd', '/k', `"cd /d E:\hexo & hexo g" `], { shell: 'cmd.exe', detached: true })

hexo 上传至服务器部署

部署前需要修改 _config.yml 配置文件,如从未部署过,需要先配置远程路径

require('child_process').spawn('start', ['cmd', '/k', `"cd /d E:\hexo & hexo d" `], { shell: 'cmd.exe', detached: true })

生成静态文件并部署

require('child_process').spawn('start', ['cmd', '/k', `"cd /d E:\hexo & hexo -d g" `], { shell: 'cmd.exe', detached: true })

清理缓存文件

require('child_process').spawn('start', ['cmd', '/k', `"cd /d E:\hexo & hexo d" `], { shell: 'cmd.exe', detached: true })

提示,以上的E:\hexo路径需注意修改为自身的博客路径才可运行!

代码详解

require('child_process').spawn()

因utools本身就是electron开发,内置node服务,可以直接使用node命令,在node中,child_process这个模块非常重要。掌握了它,等于在node的世界开启了一扇新的大门。熟悉shell脚本的同学,可以用它来完成很多有意思的事情,比如文件压缩、增量部署等,感兴趣的同学,看文本文后可以尝试下。

几种创建子进程的方式

  • 下面列出来的都是异步创建子进程的方式,每一种方式都有对应的同步版本。
  • .exec().execFile().fork()底层都是通过.spawn()实现的。
  • .exec()execFile()额外提供了回调,当子进程停止的时候执行。

child_process.spawn(command[, args][, options])
child_process.exec(command[, options][, callback])
child_process.execFile(file[, args][, options][, callback])
child_process.fork(modulePath[, args][, options])

本次主要介绍spawan方法的options参数:

  • argv0:[String] 这货比较诡异,在uninx、windows上表现不一样。有需要再深究。
  • stdio:[Array] | [String] 子进程的stdio。参考这里
  • detached:[Boolean] 让子进程独立于父进程之外运行。同样在不同平台上表现有差异,具体参考这里
  • shell:[Boolean] | [String] 用来执行命令的shell,unix上默认是/bin/sh,windows上默认是cmd.exe

cmd命令说明

cmd /c start dir:会打开一个新窗口后执行dir指令,原窗口会关闭;

cmd /k start dir:会打开一个新窗口后执行dir指令,原窗口不会关闭。

运行关键词一键启动

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。