2012-09-04 19 views
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} 

答えて

0

グローバル変数があります。ノードのutil.inspect(object)を使用してその内容を表示できます。

JSON.stringify()とは異なり、循環参照を自動的に「[Circular]」に置き換えます。あなたが」

  • global.process.argv == ['node','/Users/mike/Development/test/web.js']
  • global.process.mainModule.filename == '/Users/mike/Development/test/web.js'
+3

編集を提案するときは、投稿内のすべてを修正していることを確認しないでください。新しいタグを質問に追加する場合は、文法、スペルなども修正してください。 – Taryn

+0

フィードバックありがとう –

+0

なぜこれが投票されましたか? – dopatraman

4

:定型Expressのアプリを使用して

は、私はこれらを発見しました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()) 

jadeテンプレートのrelativePathは、about/index.jadeのようなもので、ベースフォルダを基準にしています。

私はfile.historyがどのように生成されるかどこ/全くわからないんだけど、私の場合には[0]

+0

テンプレートの 'relativePath'にどうやってアクセスしますか? – dopatraman

+0

これはグローバル変数になるので、 'relativePath'をどこにでも入力してください。 –

+0

nope、定義されていません。 – dopatraman

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) 
      } 
     })); 
} 
ジェイドで

あなたは_パス_使用して、このように_basename_できるファイル:注目すべき

<!-- #{_path_}, #{_basename_} --> 

もう一つ:文字列の補間はJADでは動作しません。 eコメント。したがって、次のコードは結果のhtmlファイルに補間されません。

関連する問題