2012-09-04 11 views
8

Esiste un oggetto globale accessibile da un modello di giada con vari parametri?Come ottengo il nome file dello script di giada in esecuzione

Esiste una variabile globale con il percorso del file di giada attualmente in esecuzione?

!!! 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} 

risposta

0

C'è una variabile globale. È possibile utilizzare il nodo util.inspect(object) per visualizzarne il contenuto.

Sostituisce automaticamente i riferimenti circolari con "[Circolare]", a differenza di JSON.stringify().

Utilizzando un boilerplate espresso app, ho trovato questi:

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

Quando suggerisci la modifica, assicurati di correggere tutto nel post, non scegliere e scegliere cosa correggere. Se aggiungi nuovi tag a una domanda, assicurati di correggere anche la grammatica, l'ortografia, ecc. – Taryn

+0

Grazie per il feedback –

+0

Perché questo è stato rifiutato? – dopatraman

4

Se si' utilizzando gulp-jade, aggiungere gulp-data al mix e utilizzare questo codice:

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()) 

Questo ti darà un relativePath nei tuoi modelli jade che è qualcosa come about/index.jade, relativo alla cartella di base.

io non sono del tutto sicuro di dove/come si genera che file.history, ma nel mio caso [0] indicai il nome del file originale (con il suo percorso assoluto sul disco)

+0

come si accede a 'relativePath' nel modello? – dopatraman

+0

Diventerà una variabile globale, quindi basta digitare 'relativaPath' ovunque. –

+0

no, diventando indefinito. – dopatraman

1

La mia soluzione:

//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) 
      } 
     })); 
} 

in Jade file, è possibile utilizzare _path_ e _basename_ come questo:

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

una cosa da notare: String interpolazione non funziona in Jad e commento. Quindi il seguente codice non verrà interpolato nel file html risultante:

// #{path} 
Problemi correlati