Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 浏览化、缩小化、条件编译 TL;博士_Javascript_Browserify_Bundling And Minification_Conditional Compilation_Uglifyjs - Fatal编程技术网

Javascript 浏览化、缩小化、条件编译 TL;博士

Javascript 浏览化、缩小化、条件编译 TL;博士,javascript,browserify,bundling-and-minification,conditional-compilation,uglifyjs,Javascript,Browserify,Bundling And Minification,Conditional Compilation,Uglifyjs,minifyify(Browserify插件)使用了uglify js,但似乎无法处理: 压缩工程 uglifyjs单独用于条件编译 minifyify提供了额外的编译优化,但我无法使用条件编译 我正在使用Browserify和babelify转换器以及minify插件。以下是cmd,分为可读部分: browserify src/scripts/app/index.js -o build/prod/public/assets/js/appBundle.min.js -t [babelify

minifyify(Browserify插件)使用了uglify js,但似乎无法处理

  • 压缩工程
  • uglifyjs单独用于条件编译
  • minifyify提供了额外的编译优化,但我无法使用条件编译

我正在使用Browserifybabelify转换器以及minify插件。以下是cmd,分为可读部分:

browserify
src/scripts/app/index.js
-o
build/prod/public/assets/js/appBundle.min.js
-t
[babelify——预设[es2015]]
-p
[minifyify--no-map--uglify[--compress[--drop\u console--dead\u code--conditionals--unused--if\u return]--mangle--screw-ie8--define[DEBUG=false]]

我已经让每一个设置/选项都发挥作用了。但是,我无法使条件编译工作。 Minifyify使用uglifyjs的
minify
方法。事实上,我经过minifyify不会改变任何事情

通过uglifyjs工程直接建造
uglifyjs input.js--compress--dead_code--define DEBUG=false--o output.js

但是我失去了minifyify提供的额外压缩/优化功能

我也愿意接受另一个构建过程。我的需求将在当前流程的设置中恢复:

  • CommonJS必需模块
  • ES6到ES5的传输
  • 高级缩小/压缩

    • 事实证明,罪犯或多或少是丑陋的。任务中全局定义的属性名称在CMD和编程API之间不同

      • cmd行
        ——定义VARNAME=VALUE
      • 编程的
        压缩:{global_defs:{varname:value}}
      也就是说,minifybrowserify似乎没有正确传递全局定义的cmd行选项-我们仍在调查这一点

      程序解决方案 通过使用Browserify&minifyify编程API,构建任务可以正常工作。下面的任务与OP中的任务相同,但它有效:

      "use strict";
      var browserify = require("browserify"),
          fs = require("fs");
      
      browserify("src/scripts/app/index.js")
          .transform("babelify", {presets: ["es2015"], plugins: ["transform-object-assign"]})
          .plugin("minifyify", {map: false, uglify: {
              compress: {
                  drop_console: true,
                  dead_code: true,
                  conditionals: true,
                  unused: true,
                  if_return: true,
                  global_defs: {
                      DEBUG: false
                  }
              },
              mangle: true,
              "screw-ie8": true
          }})
          .bundle()
          .pipe(fs.createWriteStream("build/prod/public/assets/js/appBundle.js"));
      
      uglifyjs文档中的更新 我已经提出了对当前uglifyjs文档的修改,提供了一个使用上述编程API的示例,以便在将来为其他人避免这个问题