Github-Hexo-Qiniu-Sync
原文GitHub插件:
hexo-qiniu-sync
使用插件,与github+hexo+nexT结合,图片上存到七牛,此文转载GitHub上说明。
安装
在你的hexo主目录下运行以下命令进行安装:
1 | npm install hexo-qiniu-sync --save |
添加插件配置信息到 _config.yml
文件中:
1 | plugins: |
这里对配置中的几个需要注意的参数进行说明:
offline
参数:如果要使用同步到七牛空间的静态资源,请设置为
false
。如果只想浏览在本地的静态资源文件,则设置为true
。sync
参数:如果你想关掉七牛同步,将此参数设置为false即可,不过一般用不到修改这个参数。
dirPrefix
参数:将资源上传到七牛空间内这个目录下(说是目录会容易理解点),默认为
static
目录。urlPrefix
参数:七牛空间地址的前缀,会按默认格式自动生成地址,所以此参数可省略。
默认格式为http://bucket_name.qiniudn.com/static
,如果你的七牛空间使用自定义域名或域名不是此格式的,请配置此参数。
当你设置了dirPrefix
参数后,如static
。则此url地址必须加上目录后缀/static
, 即http://bucket_name.qiniudn.com/static
,否则静态资源将无法访问。local_dir
参数:只填写一个目录名称即可,建立在hexo博客的主目录,不需要使用子目录。
当你在配置中填写好文件夹后,运行hexo时,会自动建立对应的目录。
如果你了解hexo文件夹的关系,担心这样会导致离线模式不能查看到图片,我可以告诉你你不需要担心这个问题。
在你以离线模式运行时,会自动使用软连接/联接方式帮你建立文件夹的引用,可以让你的离线浏览节省一倍的空间。update_exist
参数:如果你的静态文件会进行修改或替换,并需要更新七牛空间上原先上传的文件,则设置为
true
。
是否更新空间上已上传的文件,是按照对比文件大小是否相同
或者本地文件在上传到七牛空间之后进行过修改
的规则进行判断的。image
:extend
参数:这是个特殊参数,是文章内使用
qnimg
标签引用图片的默认图片处理操作。请参考 **七牛开发者中心-图片处理**。
可以使用 基本图片处理(imageView2)、高级图片处理(imageMogr2)、图片水印处理(watermark) 这三个图片处理接口,多个接口内容之间用|
间隔。
例如?imageView2/2/w/500
即生成宽度最多500px的缩略图。
使用标签
1 | {% qnimg imageFile attr1:value1 attr2:value2 'attr3:value31 value32 value3n' [extend:?imageView2/2/w/600 | normal:yes] %} |
jnimg
标签的图片处理: >如果你在_config.yml
文件中配置了extend
字段,则默认会对插入的图片进行对应的处理。
如果不想对一个图片进行处理,则可在jnimg
标签内增加normal:yes
参数,则使用原图,不进行图片处理。
如果只对当前图片进行处理,则可在jnimg
标签内增加extend:?imageView2/2/w/600
样式的配置参数。
当_config.yml
文件中和jnimg
标签内都定义了extend
参数,则只会使用jnimg
标签的extend
参数。
请参考**七牛开发者中心-图片处理** ,可以使用 基本图片处理(imageView2)、高级图片处理(imageMogr2)、图片水印处理(watermark) 这三个图片处理接口,多个接口内容之间用|
间隔。
Demo
1 |
将会被渲染成:
1 | <img title="图片标题" alt="图片说明" class="class1 class2" src="http://gyk001.u.qiniudn.com/images/test/demo.png?imageView2/2/w/600"> |
命令行
作为一个带命令行功能的插件,漏掉了命令行的使用说明不是好习惯。 本插件命令行为 hexo qiniu
,所支持的子命令有:
info
(简写i
)功能:显示插件版本,作者及Github地址信息等
sync
(简写s
)功能:同步静态资源到七牛空间
sync2
(简写s2
)功能:同步静态资源到七牛空间,且会同步上传那些本地与七牛空间有差异的文件。
这个命令会无视update_exist
配置。
对比规则请看update_exist
配置参数说明。
同步静态资源
当需要把静态资源同步到七牛空间中时,有如下几种方式可以同步资源:
启用本地服务器.即使用
hexo server
命令(简写为hexo s
)当以本地服务器模式启动后,会自动监测
local_dir
目录下的文件变化, 会自动将新文件进行上传。
如果文件进行了修改,但设置中没有启用update_exist
配置,则不会更新到七牛空间。使用命令行命令(
sync
|s
|sync2
|s2
)命令行命令会扫描
local_dir
目录下的文件,同步至七牛空间。
备注:使用生成(generate
)或部署(deploy
)命令时,会提示需要上传的文件数量:
[info] Need upload file num: 0
小技巧
文章模板
如果你经常在文章内插入图片,你可以修改文章模板,将空白的图片插入标签粘贴进去。
这样新建立的文章就有空白标签可以让你直接填写图片路径就好了,会很省事。
文章模板文件:./scaffolds/post.md
图片标签{
% qnimg test/demo.png title:图片标题 alt:图片说明 ‘class:class1 class2’ %}
图片处理样式
在前边的内容里,已经介绍了图片处理参数,下面来介绍一个更省事的技巧。
如果你经常使用的图片效果是固定的,你可以通过设置数据处理样式来达到灵活的控制。- 首先登陆七牛空间,选择存储空间后,再选择
数据处理
菜单。 - 设置分隔符。默认的
-
即可。 - 点击
新建样式
按钮,根据提示创建一个处理样式。 - 创建样式完毕后,你就可以将
extend
参数设置为分隔符+样式名称
了。
如你设置的分隔符为-
,样式名称为new
,则extend
参数就是-new
了。
简单吧?
你可以根据自己的需要,建立多个样式,然后在文章内使用时,为不同图片标签设置 不同的extend
参数,来达到不同的显示效果。
- 首先登陆七牛空间,选择存储空间后,再选择
常见问题
WINDOWS系统下使用离线模式,运行
hexo s
后,在文章页面中不能无法看到引用的静态资源图片
如:local_dir
参数设置为static
,运行hexo s
后source
目录下没有出现一个名字为static
的目录链接。首先检查以下内容:
- 所在的磁盘的文件系统是否为
NTFS
。因为 WINDOWS 下NTFS
系统才支持目录链接。 - 运行
hexo s
时,是否以管理员身份运行的。目录链接操作需要管理员身份才可以执行,
如果你是在打开的cmd命令行中执行hexo s
的,需要以管理员身份运行cmd才可以。
如果你是运行批处理文件运行( 例如内容为hexo s
),请批处理文件的属性中设置为以管理员身份运行。 - 不要把
local_dir
参数指定的目录设置为source
目录的子目录,应当为source
目录的同级目录。 - 如果你是FAT32格式的磁盘,你只使用离线模式的话,可以把
local_dir
参数设置为source
目录的子目录, 这样在hexo s
时,才可以正常预览。
- 所在的磁盘的文件系统是否为
在同步模式下,不能同步,出现报错为
[error] SyntaxError: Unexpected end of input
请检查设置中的
access_key
与secret_key
是否正确,以及是否可用。