如何在中间人构建页面后运行自定义操作(例如,复制文件到构建文件夹)?
我想从源代码中放置Readme.md
文件来构建目录。
答案 0 :(得分:13)
您可以使用after_build
挂钩。将以下代码添加到config.rb
。
您可以使用的钩子写在https://middlemanapp.com/advanced/custom_extensions/。
虽然没有详细记录,但似乎after_build
可以直接在config.rb
中使用,而无需编写自己的扩展程序。
after_build do |builder|
src = File.join(config[:source],"Readme.md")
dst = File.join(config[:build_dir],"Readme.md")
builder.thor.source_paths << File.dirname(__FILE__)
builder.thor.copy_file(src,dst)
end
答案 1 :(得分:1)
虽然after_build
挂钩是默认答案,但我建议使用任务运行器来完成这项工作。
任务运行程序非常棒,可以使这些例程更容易。例如,大多数Middleman项目都需要部署到托管服务器。因此,如果您碰巧使用任务运行器进行部署,您也可以使用它来复制文件。
如果您不使用任务运行器,请考虑使用一个。它会为你节省很多麻烦。
Rake是Middleman Ruby环境的自然选择,但我更喜欢Grunt。
这是一个Grunt复制任务(使用grunt-contrib-copy插件):
copy: {
bowercomponents: {
files: [
{
expand: true,
flatten: true,
src: [
'source/Readme.md'
],
dest: 'build/',
filter: 'isFile'
}
]
}
}
这是使用grunt-shell插件的部署任务:
shell: {
buildAndPublish: {
command: [
'echo "### Building ###"',
'bundle exec middleman build --verbose',
'echo "### Adding built files to git index ###"',
'cd build/',
'git add -A',
'echo "### Commiting changes ###"',
'git commit -m build',
'echo "### Pushing the commit to the gh-pages remote branch ###"',
'git push origin gh-pages',
'cd ..'
].join(' && '),
options: {
stdout: true,
stderr: true
}
}
}