我有一个使用 Node Module 创建的 gulp 任务,它调用 GCC 编译器,从而减少了我的 JS 代码。这是节点缩小。
问题是它不是“管道输出”,我无法使用管道来创建之前在其他任务上使用“uglify”gulp 模块(“gulp-uglify”)创建的源映射。
gulp.task('gcc', function () {
new compressor.minify({
type: 'gcc',
fileIn: mainFileBundled,
fileOut: mainFileBundled2,
callback: function (err, min) {
console.log(err);
//console.log(min);
}
});
});
这将是在将代码投入生产之前要做的最后一项任务,目的是进一步缩小 js 文件。
所以我的问题是。在我们希望尽可能保护代码的前提下,是否有必要将源映射投入生产?
不,如果您想使用源映射来调试代码,则只需要源映射。
旁注:不必担心文件中的
//# sourceMappingURL=...
行(如果它在缩小过程中幸存下来)。仅当您打开开发工具并转到代码面板时,浏览器才会尝试下载源地图,因此在正常使用中不会因缺少地图而收到 404 错误。这并不理想,希望您的流程能够消除它们,但如果它们存在,则基本上是无害的。当然,如果有人打开了开发工具并转到代码面板,是的,浏览器会尝试获取该文件(并且可能会失败,因为您还没有将它们投入生产)。
问题是它不是“管道输出”,我无法使用管道来创建之前在其他任务上使用“uglify”gulp 模块(“gulp-uglify”)创建的源映射。我不完全理解您在这里描述的问题,但它似乎与您的实际问题无关,因此如果您需要生成源映射的帮助,请就此提出另一个问题。
至于你的实际问题:
所以我的问题是。有必要将源地图投入生产首先:不,源映射没有任何“必要性”。您甚至不需要生成它们,除非您想使用它们进行调试。如果你这样做了,你就会因为不提供它们而妨碍自己。前提是我们要尽可能保护代码?
其次:保护本质上是开放的代码是没有意义的。当然,您可以混淆您的应用程序的功能,但无论如何,一个有能力且积极主动的对手都会渗透它,并且您绝对无法阻止这种情况的发生。如果您担心应用程序中存在安全缺陷,请对其进行审核并修复您发现的问题!这实际上会对你有帮助。