2014-09-11 123 views

回答

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; 
};