さまざまなパラメーターを持つ jade テンプレート内からアクセスできるグローバル オブジェクトはありますか?
現在実行中の jade ファイルのパスを持つグローバル変数はありますか?
!!! 5
html
head
title Test
body
//- I want to be able to know what the current script file is...
p Hello, I am: #{globals.scriptfilename}
さまざまなパラメーターを持つ jade テンプレート内からアクセスできるグローバル オブジェクトはありますか?
現在実行中の jade ファイルのパスを持つグローバル変数はありますか?
!!! 5
html
head
title Test
body
//- I want to be able to know what the current script file is...
p Hello, I am: #{globals.scriptfilename}
を使用している場合は、ミックスgulp-jade
に追加gulp-data
して次のコードを使用します。
var jade = require('gulp-jade');
var data = require('gulp-data');
gulp.src('**/*.jade')
.pipe(data(function (file) {
return {
relativePath: file.history[0].replace(file.base, '')
};
}))
.pipe(jade())
これにより、ベース フォルダーに相対的な のようなテンプレートが得られrelativePath
ます。jade
about/index.jade
それがどこでどのように生成されるかは完全にはわかりませんfile.history
が、私の場合[0]
は元のファイル名を指しています(ディスク上の絶対パスを使用)
私の解決策:
//gulpfile.js
var $path = require('path'),
jade = require('gulp-jade'),
isProduction = process.env.ENV == 'production';
gulp.task('watch', function() {
gulp.watch("**/*.jade")
.on('change', function(event) {
compileJade(event.path, isProduction);
});
});
function compileJade(path, isCompress) {
gulp.src(path)
.pipe(jade({
pretty: !isCompress,
locals: {
_path_: path,
_basename_: $path.basename(path)
}
}));
}
Jade ファイルでは、次のように _path_ と _basename_ を使用できます。
<!-- #{_path_}, #{_basename_} -->
注意すべきもう 1 つの点: 文字列補間は jade コメントでは機能しません。したがって、次のコードは結果の html ファイルに補間されません。
// #{path}