Grunt编译Jade文件

Lan*_*opp 22 javascript node.js gruntjs

我正在尝试配置我的Gruntfile以将我的所有Jade文件编译为单独的HTML文件.例如,如果我有以下源文件夹:

source
??? templates
    ??? first.jade
    ??? second.jade
    ??? third.jade
Run Code Online (Sandbox Code Playgroud)

然后我希望grunt jade输出:

build
??? templates
    ??? first.html
    ??? second.html
    ??? third.html
Run Code Online (Sandbox Code Playgroud)

这是我的Gruntfile使用grunt-contrib-jade:

module.exports = function(grunt) {
    grunt.initConfig({

        jade: {
            compile: {
                options: {
                    client: false,
                    pretty: true
                },
                files: [ {
                  src: "*.jade",
                  dest: "build/templates/",
                  ext: "html",
                  cwd: "source/templates/"
                } ]
            }
        },
    });

    grunt.loadNpmTasks("grunt-contrib-jade");
};
Run Code Online (Sandbox Code Playgroud)

但是,当我运行jade命令时,我收到以下错误:

Running "jade:compile" (jade) task
>> Source file "first.jade" not found.
>> Source file "second.jade" not found.
>> Source file "third.jade" not found.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 50

完成上述答案

    jade: {
        compile: {
            options: {
                client: false,
                pretty: true
            },
            files: [ {
              cwd: "app/views",
              src: "**/*.jade",
              dest: "build/templates",
              expand: true,
              ext: ".html"
            } ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

因此,如果您的来源结构如下:

app
??? views
    ??? main.jade
    ??? user
        ??? signup.jade
        ??? preferences.jade
Run Code Online (Sandbox Code Playgroud)

grunt jade 将创建以下结构

build
??? templates
    ??? main.html
    ??? user
        ??? signup.html
        ??? preferences.html
Run Code Online (Sandbox Code Playgroud)

编辑:grunt-contrib-jade已弃用.你应该宁愿使用grunt-contrib-pug.它完全一样,但他们不得不将玉重命名为哈巴狗!

  • `files:`部分有点令人困惑.Grunt是否扩展了它,或者它们是grunt jade插件的选择?我问,因为我希望能够在`/ views /`目录中使用layout.jade文件作为include,但我不想编译`layout.jade`文件.`-I`是否有一种灵巧的方式在`files`字段中包含一个文件.我想将它保存在/ views /中,因为Express渲染引擎使用它.谢谢. (2认同)