gulp-pugを使っている時に、pugでmarkdownをincludeするべく、filterを書いてみた。
昔のjadeであれば、普通にすんなりmarkdownぐらいincludeできていたのになあ。
include:md ./include.md
特にjadeのfilterなどの実装は必要なかった。
pugでこれをやろうとしたらできなかったが、どうしてもmarkdownが書きたくてgulpfile.babel.js
をちょっといじった。
どうやってやったか。
手順はだいたい2つ。
1. gulpfile.babel.js
からfilterを追加。
gulp-jade
と同じようにしてfilterを追加したら普通に動いた。
import marked from 'marked';
import pug from 'pug';
import fs from 'fs'
import gulpPug from 'gulp-pug';
pug.filters.markdownInclude = function (filePath) {
var str = fs.readFileSync(filePath).toString();
return marked(str);
}
gulp.task('pug', () => {
gulp.src('path/to/src.pug')
.pipe(gulpPug({
pug: pug
}))
.pipe(gulp.dest('./path/to/dest/'));
});
2. 実際のpugファイルでmarkdownをinclude
include:markdownInclude ./include.md
これでincludeできる
注意点
以前のmarkdown用のfilterだとこの書き方ができた。
:md
# hoge
* fuga
* piyo
今回の:markdownInclude
だとそれはできない。下記のような実装でならできる(気がする)。
import marked from 'marked';
import pug from 'pug';
import gulpPug from 'gulp-pug';
pug.filters.md = function (str) {
return marked(str);
}
gulp.task('pug', () => {
gulp.src('path/to/src.pug')
.pipe(gulpPug({
pug: pug
}))
.pipe(gulp.dest('./path/to/dest/'));
});
:md
# hoge
* fuga
* piyo
謎の知見
pugの場合だとinclude:filter-name
と同じ行に相対パスを書くと、gulpfile上で実装したfilterの関数の引数に絶対パスが降ってくる(というか降ってきた)。謎の知見になった。
Author And Source
この問題について(gulp-pugを使っている時に、pugでmarkdownをincludeするべく、filterを書いてみた。), 我々は、より多くの情報をここで見つけました https://qiita.com/denari01/items/a45a9e7a66447c2e5869著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .