Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过吞咽来丑化顶级功能_Javascript_Gulp_Uglifyjs - Fatal编程技术网

Javascript 通过吞咽来丑化顶级功能

Javascript 通过吞咽来丑化顶级功能,javascript,gulp,uglifyjs,Javascript,Gulp,Uglifyjs,以这个简单的大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大 gulp.task('scripts', function() { // Minify and copy all JavaScript (except vendor scripts) return gulp.src(paths.scripts) .pipe(uglify()) .pipe(concat('all.min.js')) .

以这个简单的大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大

gulp.task('scripts', function() {
  // Minify and copy all JavaScript (except vendor scripts)
  return gulp.src(paths.scripts)
    .pipe(uglify())
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
});
如果您有两个文件:

文件
f1.js

function f1(){
  var hello = 1;
  return hello;
}
function f2(){
  return f1();
}
文件
f2.js

function f1(){
  var hello = 1;
  return hello;
}
function f2(){
  return f1();
}
all.min.js
中任务的结果是:

function f1(){var n=1;return n}
function f2(){return f1()}
我如何才能使这些顶级函数名变得丑陋,即
f1
f2
?我试过:

一个特别丑陋的人

return gulp.src(paths.scripts)
    .pipe(uglify())
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'))
    .pipe(uglify());
通过轧件选项

return gulp.src(paths.scripts)
    .pipe(uglify({mangle: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
return gulp.src(paths.scripts)
    .pipe(uglify({toplevel: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
通过顶级选项

return gulp.src(paths.scripts)
    .pipe(uglify({mangle: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));
return gulp.src(paths.scripts)
    .pipe(uglify({toplevel: true}))
    .pipe(concat('all.min.js'))
    .pipe(gulp.dest('build/js'));

但这一切都毫无效果。

似乎
uglify
不会损坏作为全局变量的函数名(即使同时将“mangle”和
toplevel
参数设置为
true
)。无论如何,这样做对我来说都是不切实际的,因为HTML中的任何事件处理程序在丑化之后都无法工作,而且您也无法(轻松地)从控制台调用函数,因为名称可能已经更改。 如果这对您来说无关紧要,请尝试将代码包装到函数范围中:

(function(){
  // your code here...
}());
这样,uglify将损坏函数名


如果要使脚本无法访问,您也可以尝试Gulp的
obfuscate
插件。

谢谢,我明天会试试。
.pipe(uglify({mangle: {toplevel: true}}))