8

さまざまなパラメーターを持つ 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}
4

3 に答える 3

6

を使用している場合は、ミックス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ます。jadeabout/index.jade

それがどこでどのように生成されるかは完全にはわかりませんfile.historyが、私の場合[0]は元のファイル名を指しています(ディスク上の絶対パスを使用)

于 2014-11-12T12:09:04.880 に答える
1

私の解決策:

//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}
于 2015-12-02T07:15:54.763 に答える