我想缩小并丑化文件夹中的所有 *。js 文件,并根据特定条件使用 Gulp 将结果推送到另一个文件夹,就像我将 env 参数作为 prod 传递,然后只会发生这种情况:
这是我的 gulpfile.js :
var gulp = require('gulp');
var gminify = require('gulp-minify');
var gif = require('gulp-if');
var guglify = require('gulp-uglify');
var args = require('yargs').argv;
gulp.task('minify_js', function(){
return gulp
.src('app/js/*.js')//TAKE ALL THE JS FILES FROM THE FOLDER
.pipe(gif(args.env === "prod", gminify()))//DO MINIFY ONLY IN CASE env === prod
.pipe(gif(args.env === "prod", guglify()))
.pipe(gulp.dest('dist/js'));//PASTES THEM TO dist/js folder after processing
});
现在运行这个我就像这样使用:
gulp minify_js --env prod
在这种情况下,只要我将 - env 值设为 prod ,就会生成缩小版本,但这不是 uglify 格式。
参考 app / js 内的 js 文件名为 test.js 其内容如下:
var abc = function(){
console.log("This is just a test message");
};
abc();
运行后,在 dist / js 内生成2个文件,即 test.js (其内容相同)和 tests.min.js 其内容如下:
var abc=function(){console.log("This is just a test message")};abc();
看起来像缩小但不是 uglified 。
所以我的问题是我错过了什么?
仅供参考: 我已经安装 gulp,gulp-minify,gulp-if,gulp-uglify,yargs 作为开发依赖项的
答案 0 :(得分:3)
根据你的评论,我可以得出结论,你对缩小和丑化有不正确的理解。这是一个小例子:
没有缩小而不是丑化的例子:
/**
* This class describe animal class
*
*/
class Animal(name) {
this.name = name !== false ? name : "animal";
}
function wrapName(name) {
var length = name.length;
return length < 5 ? "My name: " + name : name;
}
这里是缩小的例子:
class Animal(name){this.name=name!==false?name:"animal";}function wrapName(name){var length=name.length;return length<5?"My name: "+name:name;}
这是一个丑陋的例子:
class Animal(n){this.name=!!n?n:"animal";}function wrapName(n){return n.length<5?"My name: "+n:n;}
如您所见,丑化和缩小的示例看起来非常相似。只有区别在于uglify会(可以)将一些块范围的变量(例如函数参数)重命名为一个字母,或者执行一些替换,例如false
→!1
,true
→{{ 1}}。
缩小的实现可以从一个库到另一个库不同,并且可能两次使用相同的函数调用,但名称不同。