gpt4 book ai didi

gulp - 如何使用 gulp 编译 mustache 模板部分?

转载 作者:行者123 更新时间:2023-12-04 18:38:16 25 4
gpt4 key购买 nike

我在 Ruby 下使用 Mustache/Sass/Compass-watch 制作静态 HTML 页面的原型(prototype)。这个设置非常慢,所以我想转向使用 Gulp 构建所有东西。我设法让它构建了 Sass,但没有构建 Mustache。它只是在 mustache 模板中看不到部分内容。
我的文件结构是这样的:

.
├── css
├── scss
├── index.html
├── gulpfile.js
└── templates
├── index.mustache
└── partials
└── header.mustache

其中 index.mustache 是:
{{> partials/head }}

<body>
{{> partials/header }}

<div class="wrap">
{{> some_inner_partial }}

<div class="content">
...
</div>
</div>

{{> partials/footer }}

</body>
</html>

我的 gulpfile.js 是这样的:
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var mustache = require("gulp-mustache-plus");

// Gulp Sass Task
gulp.task('sass', function() {
gulp.src('./scss/{,*/}*.{scss,sass}')
.pipe(sourcemaps.init())
.pipe(sass({
errLogToConsole: true
}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./css'));
});

// Gulp Mustache Task
gulp.task('mustache', function() {
gulp.src("./templates/*.mustache")
.pipe(mustache({},{},{
file_1: "partials/*.mustache"
})).pipe(gulp.dest("./"));
});

gulp.task('default', ['sass', 'mustache'], function () {
gulp.watch('./scss/{,*/}*.{scss,sass}', ['sass']);
gulp.watch('./templates/{,*/}*.{mustache}', ['mustache']);
});

所以当我运行 gulp在控制台中,它可以很好地构建 scss->css 并监视更改,但是对于 mustache,它会构建 html 标签而不是部分,而且它也不监视 mustache 文件中的更改。

显然, mustache 任务有问题。请帮助我了解我在这里缺少什么。我对任务运行者很陌生,以前从未使用过 Gulp/Grunt。

最佳答案

所以我想出了解决方案。
为了让 gulp 观察 mustache 的变化,我不得不改变 gulp.watchgulp.watch('./templates/**/*.mustache', ['mustache']);为了让 gulp-mustache-plus 查看部分内容,我需要手动创建一个具有部分名称和路径的对象,并将其作为第三个参数传递给 mustache 任务。这很奇怪,因为没有人愿意做体力活,对吧?

无论如何 gulpfile.js 必须如下所示:

var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var mustache = require("gulp-mustache-plus");

// Gulp Sass Task
gulp.task('sass', function() {
gulp.src('./scss/{,*/}*.{scss,sass}')
.pipe(sourcemaps.init())
.pipe(sass({
errLogToConsole: true
}))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./css'));
});

// Gulp Mustache Task
gulp.task('mustache', function() {
gulp.src("./templates/*.mustache")
.pipe(mustache({},{},{
head: "./templates/layout/head.mustache",
header: "./templates/modules/header.mustache",
... etc.... //any oter partials
})).pipe(gulp.dest("./"));
});

gulp.task('default', ['sass', 'mustache'], function () {
gulp.watch('./scss/{,*/}*.{scss,sass}', ['sass']);
gulp.watch('./templates/**/*.mustache', ['mustache']);
});

然后在我的 mustache 文件中,我必须从该对象中放入部分名称:
{{> head }}

<body>
{{> header }}

<div class="wrap">
{{> some_inner_partial }}

<div class="content">
...
</div>
</div>

{{> footer }}

</body>
</html>

现在一切正常。

关于gulp - 如何使用 gulp 编译 mustache 模板部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com