hexo教程之为hexo编写一个插件

Posted by 咖啡狼 on 2019-07-03

准备工作

Hexo安装完毕,执行完毕hexo init. 可以本地访问.
如果NPM有下载问题,请使用cnpm CNPM
另外强烈推荐git bash

插件简介

很多人不理解为什么要有插件,因为我们已经被浏览器的插件烦透了对吗? 没错。不受控的插件只会把用户搞疯狂。
但是受控的插件,可以锦上添花

确定需求

插件存在的意义是,一定要解决用户痛点。本文实例只会打印一句log,很显然没人会用这个插件。

新建package.json文件

在你的hexo blog目录,找到node_modules. 新建一个文件夹。然后执行npm init
npm会引导你生成package.json 这是你的包的描述文件。需要注意的是,所有的hexo插件必须以hexo-开头,否则hexo不会加载。

1
2
3
mkdir your_mod
cd your_mod
npm init

根据提示输入信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
$ npm init
...
package name: (mytest) hexo-remote-writting
version: (1.0.0) 0.0.1
description: A hexo plugin to support writting post remotely
entry point: (index.js)
test command:
git repository:
keywords: hexo plugin remote writting
author: yourname
license: (ISC) MIT

Is this OK? (yes)

回车然后package.json 就生成好了。

新建index.js文件

根据上面的package.json, 我们设置了入口JS文件名,因此必须新建一个index.js,这个包才完整。
我们根据hexo文档,注册插件,这个插件会在hexo 生成静态文件时,打印一条log.

1
2
3
hexo.extend.filter.register('before_generate', function(){
console.log("this is from remote writting:");
});

新建README.md

这个文件会显示在npmjs你的模块界面,对用户更友好。

测试

回到上级目录,修改hexo的 package.json,新增一行到dependency:

1
"hexo-remote-writting": "^0.0.1",

然后,每次执行hexo g或者hexo s, 都会看到插件的log, 证明插件已经运行了。

发布

如果你要发布到NPM, 那么遵循npm的流程即可。
如果你使用taobao的registry,npm login 和 npm publish可能会失败。

1
npm config list

需要恢复默认registry:

1
npm config set registry 'http://registry.npmjs.org'

当你的包发布好以后,只需要回到你的blog目录

1
npm install hexo-your-plugin --save

本地package.json dependency 会对应修改。
你可以试试是否已经生效。