在grunt-contrib-jade任务中加载外部文件

时间:2014-04-19 15:12:57

标签: gruntjs

所以我有这个grunt-contrib-jade设置正常工作

当我自己在(导出的)Gruntfile中包含我的数据时,一切都很好:

module.exports = {
   website: {
     options: {
       data: {
         pageTitle: "This is my website",
         greeting: "Hello world",
       },
       debug: true,
       pretty: true
    },
    files: {
      'build/website/index.html': 'src/jade/template/index.jade'
    }
  }
};

它将我的index.jade与我的数据值合并,我的index.html输出就是应该的样子。但是,当我想加载外部文件来定义我的数据时,它就出错了:

options: {
  data: function (dest, src) {
    // Return an object of data to pass to templates
    return require('src/jade/template/locals.json');
  },
  debug: true,
  pretty: true
},
files: {
  'build/website/index.html': 'src/jade/template/index.jade'
}

需求路径有效,我对其进行了三重检查。它与index.jade位于同一文件夹中。但是我仍然遇到这个错误:

Running "jade:website" (jade) task
>> Jade failed to compile "src/jade/template/index.jade".
>> Error: Cannot find module './locals.json'
>> Destination not written because compiled files were empty.

我尝试了一切,但我只是没有看到它。

1 个答案:

答案 0 :(得分:1)

本地模块需要添加' ./'当你require时。

  data: function (dest, src) {
    // Return an object of data to pass to templates
    return require('./src/jade/template/locals.json');
  }

会奏效。你没有对这个功能做任何事情(至少还没有),所以这也可能是

data: require('./src/jade/template/locals.json')

甚至

data: grunt.file.readJSON('./src/jade/template/locals.json')