我有一个项目,在src
目录之外有很多有用的文档,我想像往常一样呈现DocPad文档。
示例:
项目根目录下的文件:README.md
,LICENSE
,Contributing.md
和类似的文件已存在,可用于GitHub等内容。我想重用这些文件中的内容来创建相应的readme
,license
和contributing
页面,或者将这些文件中的内容包含在布局或文档中。
我有一个项目里面有一些文档,我想通过将.md
文件包含在package.json
中来将其作为DocPad文档呈现,所以这些文件将在node_modules
根目录。
在这两种情况下,src/documents
之外的文件都是我想用作部分或文档的,而且似乎部分插件无法帮助我(或者我无法使用找到一种方法让它做我想做的事情,而@getCollection
只能从src/documents
获取内容。
所以,问题是:有没有办法告诉DocPad处理src
文件夹外部的一些文件/文件夹?我想念一下吗?
如果没有,那么作为插件的最佳方式是什么?我应该挖掘哪个方向?
答案 0 :(得分:2)
DocPad本身支持在默认的src
文件夹之外存储文档。这样做的方法是通过DocPad Configuration File中的documentsPaths
配置选项(例如docpad.coffee
)。像这样:
path = require('path')
docpadConfig = {
documentsPaths: [
'documents'
path.resolve('..','data','documents')
]
....
当然,如果你想在文件系统的某个地方包含任意的单个文件,那么这将会失败。在这种情况下,符号链接将是最佳选择。
答案 1 :(得分:1)
答案很简单:相对符号链接。 Docpad完美地处理它们。
这样,要在文档中包含一个README.md符号链接,你应该这样做(使用pwd
src / documents):
ln -s ../../README.md readme.html.md
或者,如果来自项目模块之一的文档:
ln -s ../../node_modules/foobar/docs/ docs
这两种变体都能很好地运作。
注意:符号链接可能很棘手。有关常见问题,请参阅以下内容:
答案 2 :(得分:1)
也可以使用模板助手,因为他们可以做任何你想做的事。
例如,Bevry Learning Centre网站使用模板助手通过相对路径呈现任意文件作为代码示例:
如果您还要渲染它们,可以将此类解决方案与Text Plugin结合使用。
组合就是这样:
DocPad配置文件中的模板助手:
docpadConfig =
templateData:
readProjectPath: (relativePath) ->
fullPath = require('path').join(__dirname, relativePath)
return @readFullPath(fullPath)
readRelativePath: (relativePath) ->
fullPath = @getPath(relativePath)
return @readFullPath(fullPath)
readFullPath: (fullPath) ->
result = require('fs').readFileSync(fullPath)
if result instanceof Error
throw result
else
return result.toString()
使用Eco作为模板引擎使用模板助手和文本插件:
<t render="markdown"><%- @readProjectPath('README.md') %></t>
答案 3 :(得分:0)
正如不同答案之间的比较:
当您要添加要包含在DocPad数据库中的整个额外目录时,请使用paths solution以供DocPad正常使用。
当您想要包含您希望被视为DocPad文档或文件的特定文档或文件时,请使用sym/hard link solution,包括所有智能文件解析和文档呈现,包括布局,数据库和缓存功能。
如果您想要包含您不希望包含在DocPad数据库中的特定文件,请使用template helper solution。
将此答案作为社区维基的答案,因此可以相应更新以获得新的答案和更好的细节。