O / S是ubuntu 16,节点版本是4.2.6。
我有源/开发代码和运行/分发代码,source.js文件被缩小和修改以创建等效的source.min.js文件,我希望节点js require自动搜索.min.js文件以及.js文件。
但由于我有很多文件,我宁愿不必在每个文件中检查每个需求,而是修改内置的require()函数。
这是一个非常简单的独立函数实现,但是如何修改内置函数的行为方式相同?
function require(file){
try{return require(file)}
catch(e){return require(file+='.min.js')}
}
答案 0 :(得分:0)
您可以通过修改require
的原型函数Module class
并全局应用
以下是如何做到这一点:
var pathModule = require('path');
var assert = require('assert').ok;
module.constructor.prototype.require = function (path) {
var self = this;
assert(typeof path === 'string', 'path must be a string');
assert(path, 'missing path');
try {
return self.constructor._load(path, self);
} catch (err) {
// if module not found, we have nothing to do, simply throw it back.
if (err.code === 'MODULE_NOT_FOUND') {
throw err;
}
// resolve the path to get absolute path
path = pathModule.resolve(__dirname, path+".min.js")
// Write to log or whatever
console.log('Error in file: ' + path);
}
}