找到:node-8.11.2\lib\module.js,在其中增加一种扩展名的文件支持,比如ejs。重新编译node,这个node最终要发布到生产环境执行。
Module._extensions['.ejs'] = function (module, filename) {
var buffer = fs.readFileSync(filename)
var content = zlib.gunzipSync(buffer).toString(); //这里只是简单的解压缩,可以换成自己的解密算法
module._compile(internalModule.stripBOM(content), filename);
};
把自己的nodejs新项目下所有的js文件加密成ejs文件。
如果是nodejs 10.2.1,找到node-10.2.1\lib\internal\modules\cjs\loader.js修改,类似的修改方式,只是代码里要去掉internalModule:
Module._extensions['.ejs'] = function (module, filename) {
var buffer = fs.readFileSync(filename)
var content = zlib.gunzipSync(buffer).toString(); //这里只是简单的解压缩,可以换成自己的解密算法
module._compile(stripBOM(content), filename);
};