是否可以从具有各种参数的玉石模板中访问全局对象?
是否有一个全局变量,其中包含当前正在执行的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 :(得分:5)
如果您使用的是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]
指向原始文件名(在磁盘上有绝对路径)
答案 1 :(得分: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_} -->
还有一点需要注意:字符串插值在jade注释中不起作用。所以下面的代码不会在结果html文件中插入:
// #{path}
答案 2 :(得分:0)
有一个全局变量。您可以使用节点的util.inspect(object)来查看其内容。
与JSON.stringify()
不同,它会自动用“[Circular]”替换循环引用。
使用样板Express应用程序,我找到了这些:
['node','/Users/mike/Development/test/web.js']
'/Users/mike/Development/test/web.js'