介绍
gulp-wrap
是一个npm包,用于在gulp任务中应用模板引擎来操作文件内容。它支持多种模板引擎,包括Handlebars、Lo-Dash、Underscore等。
安装
可以通过npm安装gulp-wrap
包:
npm install gulp-wrap --save-dev
使用
在gulp任务中引入gulp-wrap
const wrap = require('gulp-wrap');
在gulp任务中应用gulp-wrap
gulp.task('wrap', function () { return gulp.src('src/**/*.html') .pipe(wrap('<html><head></head><body><%= contents %></body></html>')) .pipe(gulp.dest('dist')); });
在上面的例子中,gulp-wrap
会将每个匹配到的HTML文件包含在一个HTML标签中,并将结果输出到dist
目录中。
应用模板引擎
除了简单地将文件包含在固定的字符串中之外,gulp-wrap
还允许应用模板引擎来处理文件内容。以下是一个示例,使用Handlebars模板引擎:
const wrap = require('gulp-wrap'); const handlebars = require('handlebars'); gulp.task('wrap', function () { return gulp.src('src/**/*.html') .pipe(wrap(handlebars.compile('<html><head></head><body>{{{ contents }}}</body></html>'))) .pipe(gulp.dest('dist')); });
这里使用handlebars.compile()
方法将模板编译成一个函数,然后将该函数作为参数传递给gulp-wrap
。
使用模板引擎可以让我们在文件内容中插入动态的数据或者执行一些JavaScript操作。
传递变量到模板
我们可以通过第二个参数传递变量给模板引擎。以下是一个示例:
-- -------------------- ---- ------- ----- ---- - --------------------- ----- ---------- - ---------------------- ----------------- -------- -- - ------ ------------------------- ----------- ------------------------------------------------ -------- ---------- --------------------- -- ---- ------------------------- ------ -------- -- ------------------------- ---
在这个例子中,我们传递了一个包含name
属性的对象作为第二个参数,然后在模板中使用{{ name }}
来引用该属性。
使用文件元数据
gulp-wrap
允许使用文件元数据(metadata)来扩展模板功能。元数据是一个包含文件信息的对象,它包括文件名、路径、扩展名等信息。以下是一个示例:
-- -------------------- ---- ------- ----- ---- - --------------------- ----- ---------- - ---------------------- ----------------- -------- -- - ------ ------------------------- ----------- ------------------------------------------------ -------- ---------- ------------ -- --------- ---------------- ----- ---------- ------- -- ------------------------- ---
在这个例子中,我们传递了一个名为data
的元数据对象到模板中,并使用{{ file.path }}
引用文件路径信息。
多个模板
如果我们不想为所有文件使用相同的模板,我们可以根据需要为每个文件指定一个特定的模板。以下是一个示例:
-- -------------------- ---- ------- ----- ---- - --------------------- ----- ---------- - ---------------------- ----------------- -------- -- - ------ ------------------------- ------------------- ------ - -- -------------------------- - ------ ------------------------------------------------ -------- ---------- ------- -- --- ----- ------------------- - ---- - ------ ------------------------------------------------ -------- ---------- ------- -- - ------- ------------------- - - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------