Terser不提供缩小文件

时间:2019-06-10 05:31:23

标签: javascript angularjs gruntjs terser

我正在尝试使用grunt和terser最小化angularjs应用程序。我首先使用了uglifiy-es,但是随后阅读到它存在一些问题。所以我尝试了terser。但是输出不会给我缩小的文件。

gruntfile.js

    module.exports = function(grunt) {
  grunt.initConfig({
      pkg: grunt.file.readJSON('package.json'),
        //grunt task configuration will go here
        ngAnnotate: {
          options: {
              singleQuotes: true
          },
          app: {
              files: {
                  './public/min-safe/js/_config_min.js': ['./controllers/_config.js'],
                  './public/min-safe/js/ctrl_accountingdashboard.js': ['./controllers/ctrl_accountingdashboard.js'], 

              }
          }
      },
      concat: {
        js: { //target
            src: ['./public/min/app.js', './public/min-safe/js/*.js'],
            dest: './public/min/app.js'
        }
    },
    terser: {
      options: {},
      files: {
        './public/min/app.js': ['./public/min/app.js'],
      },
    }
  });

  //load grunt tasks
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-terser');
  grunt.loadNpmTasks('grunt-ng-annotate'); 

  //register grunt default task
  grunt.registerTask('default', ['ngAnnotate', 'concat', 'terser']);

}

3 个答案:

答案 0 :(得分:0)

我有同样的问题。根据文档,这应该有效,但对我而言不行。将自定义目标中的“文件”设置包装起来对我有用:

terser: {
  options: {},
  main: {
    files: {
      './public/min/app.js': ['./public/min/app.js'],
    }
  }
}

答案 1 :(得分:0)

要添加到@Tim的出色答案中:
这是一个允许使用路径/文件通配符模式(globbing)运行grunt-terser的示例-它不支持开箱即用。

请注意terser配置中的辅助属性bx_src不会由grunt-terser本身读取,而是由任务_dest读取。此任务扩展terser_all中的通配模式,并在_src属性中构建实际配置。完成后,它将使用更新后的配置运行terser。

files

答案 2 :(得分:0)

请注意: 如果您尝试通过重命名来“禁用”某些选项,则会禁用整个过程。至少这是我对 grunt-terser 的结果。我只剩下原始的 js 文件。

{
   mangleX: {
          reserved: [/* ... */]
   }
}