まとめ
- jadeじゃなくて、pugを使おう!
- pugなら、「yield」は「yield.」・「yield(from="xxx")」・「yield(from="xxx")」で書ける!
- pugはブラウザじゃなくてあらかじめwebpack等で変換!cdnはどこ???
pugとriot.jsではyieldがキーワード。
ということで、うまく使えない。らしい。
my-tag
#{'yield'}
とかエスケープすればいいらしい。意味なくない?riotするためのyieldしか使わないのに。
ならば、ということでいろいろやって解決したのですが、実は、それは、pugじゃなくて、jadeの時のお話だったもよう。
現在のpugであれば、
my-tag
yield(from="header")
yield.
my-tag2
yield(to="header")
span HEADER
span CONTENT
という風に「yieldのみの行」でなければ、キーワードではなくタグと認識されます。
yield.であれば、script.のときと同じノリなので、十分許容範囲に思えます。
#せっかく、pug-html-loaderを直して、pug-pluginも作ったのに。
愚痴:pugのcdnがない!
仕方がないので、npmしたpugをbrowserifyしてみたものの落ちる。
Consoleを見ると、以下のような情報が出ている。
Uncaught TypeError: Cannot read property 'split' of undefined
ソースは、こんな感じだから、nodeがないんだろうね.....
var current = process.versions.node.split('.');
で、この処理は、requireで以下のような呼び出しで呼ばれている。
pug->pug-filters->./lib/run-filter->resolve->./lib/core
pug-filtersが呼ばれないようにすればいいのかな?と思って、package.jsonで、以下のように自分のファイルに差し替えようとしても、うまくいかない。
#これは、変な気がするけど、いろいろやったものの、解決できず......
"browser": {
"pug-filters": "./pug-filters.js"
},
あきらめて、node_modules/pug/package.jsonの方で、上記の内容を持っていくとうまくいく。
で、これでできたpug.jsを使ってやると、「yield.」とかの記述でもうまく通った。