背景
在开发过程中经常经常碰到需要获取当前时间戳的情况,我之前的做法都是打开浏览器的控制台,输入 new Date().getTime(),然后复制输出内容,粘贴到要使用的地方。刚好最近在学习 alfred 的 workflow,于是就打算自己动手来实现一个获取当前时间戳的 workflow。
alfred 简单介绍
alfred 是一款 mac 行著名的效率工具应用,支持应用切换,文件搜索,自定义工作流等等各种快捷操作,具体可以自行查阅官网:www.alfredapp.com/
workflow 开发
这里我使用的语言是 javascript,另外也支持 python,shell 等多种其他语言,首先打开 alfred 的 workflow 页面,点击右侧面板中的 Create a new Workflow按钮
在弹出的表单中填写这个 workflow 相关的信息,包括:名称,描述,分类,bundle id,创建者等
填写完成后点击 Create就好了。然后我们在 workflow 中右键空白处,选择 Inputs -> Script Filter,新建一个脚本
填写 script 的配置,language 配置 /bin/zsh 或者是 /bin/bash 都可以,Script的主体就是执行了一个名为index的 javascript文件,我们的实现代码也将会写在 index.js中
上一步填写完成点击 Save后,我们就可以开始编写代码了,首先我们要找到 workflow 所在的位置。可以右键单击新创建的 workflow然后选择Open in Terminal,就会在终端中打开当前 workflow目录了。
然后我们输入 npm init - y来初始化一个 nodejs 项目,接着安装所需依赖
npm i alfy --save
然后创建一个 index.js文件,使用你喜欢的编辑器打开,我这里使用 vscode,直接在终端中输入 code .命令就可以了,在 index.js文件中编写如下代码:
import alfy from 'alfy';
const time = new Date().getTime();
alfy.output([
{
title: '当前时间戳:' + time,
subtitle: 'Press ⌘L to see the full error and ⌘C to copy it.',
arg: `${time}`,
},
]);
完成后,我们可以尝试执行 node index.js来测试一下是否运行正常,可能会发现这个报错
这是因为这个项目的 module 配置问题导致的,我们在 package.json中添加一行
再尝试执行 node index.js,如果不出意外的话,就能成功打印出下面的信息了
最后我们回到 workflow配置的页面中,将输出的时间戳复制到剪切板中就大功告成了~
还是右键空白处 Outputs -> Copy to Clipboard,弹出的表单中不用修改配置,直接 Save就行了
然后我们把两个流程连接起来,如下图
激动人性的时刻来了,我们打开 alfred,输入 now,就可以看到当前的时间戳了,按下回车就能直接将时间戳复制到剪切板了
如果你想替换默认的图标,可以到下面的 icon 网站中找一个你喜欢的,上传就可以了。
总结
本篇文章记录了使用 nodejs 从 0 开发一个 alfred workflow 的全过程,包括每个具体的操作步骤以及报错的解决方案。虽然实现的 workflow 功能较为简单,但是可以拓宽我们的思路,以后碰到类似的重复性工作时,是否可以考虑编写一个 workflow 脚本来完成呢?好了,这次分享就到这里了。下一篇我将会写一写如何将自己编写的 workflow 打包发布提供给其他人下载使用,敬请期待,可以点个关注哦~
其他好用的 workflow
- 获取机器 ip github.com/alexchantas…
- 颜色转换 github.com/g1eny0ung/A…
icon 网站
更多内容,可以关注我的公众号~