Swig-template默认扩展名

时间:2014-09-11 12:08:40

标签: node.js swig-template

我可以设置扩展名吗?例如:

 .html or .htm 

我可以为某些布局设置自定义扩展吗?像:

 .xml

1 个答案:

答案 0 :(得分:2)

Swig不关心/了解扩展。您可以尝试编写custom loader来为您执行此操作。只需复制文件系统加载器,并检查给定的路径是否包含扩展名,如果是,请使用默认值。

var fs = require('fs'),
  path = require('path');

module.exports = function (basepath, encoding) {
  var ret = {};

  encoding = encoding || 'utf8';
  basepath = (basepath) ? path.normalize(basepath) : null;

  ret.resolve = function (to, from) {
    if (basepath) {
      from = basepath;
    } else {
      from = (from) ? path.dirname(from) : process.cwd();
    }
    return path.resolve(from, to);
  };

  ret.load = function (identifier, cb) {
    if (!fs || (cb && !fs.readFile) || !fs.readFileSync) {
      throw new Error('Unable to find file ' + identifier + ' because there is no filesystem to read from.');
    }

    // Start of added code...
    var extension = path.extname(identifier);

    if (!extension) {
      // Set this to whatever you want as a default
      // If the extension exists, like 'foo.xml', it won't add the '.html'
      identifier += '.html';
    }
    // End of added code

    identifier = ret.resolve(identifier);

    if (cb) {
      fs.readFile(identifier, encoding, cb);
      return;
    }
    return fs.readFileSync(identifier, encoding);
  };

  return ret;
};