自动化助手帮助一键快速运行hexo服务
因最近使用utools
工具比较频繁,插件有自动化工具,刚好想解决每次一个比较繁琐的问题,hexo的启动已经一些命令,通常是要找到自己的博客文件路径,进行打开终端运行,有点麻烦。本次借用utools的自动化助手插件解决该问题。
新建脚本
启动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 国际许可协议 进行许可。