【问题标题】:How to uglify multiple .js files in a folder and output them to a different folder?如何对一个文件夹中的多个 .js 文件进行 uglify 并将它们输出到不同的文件夹?
【发布时间】:2019-03-26 19:37:25
【问题描述】:

我是 grunt 新手,在使用插件 grunt-contrib-uglify-es 时不知道如何定义路径。

这是我的文件夹结构:

.
├── controllers
├── models
├── public
│   ├── build
│   │   ├─ foo.min.js
│   │   └─ x.min.js
│   ├── css
│   ├── font
│   └── js
│        ├─ foo.js
│        └─ x.js
├── routes
├── tests
├── utils
└── views

这是我的繁重任务:

// take all js file in public/js/ and put them in public/build/
uglify: {
  options: {
    mangle: false,
          banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  },
  build: {
    files: [{
      expand: true,
      src: 'public/js/*.js',
      dest: 'public/build/',
      rename: function (dst, src) {
        console.log(dst);
        console.log(src);
        return src;
      }
    }]
  }
}

当我运行 grunt 时,它会将文件创建到 public/js 并覆盖现有文件。我不明白为什么。

我也试过这个:

expand: true,
src: 'js/*.js',
dest: 'build/',
cwd: 'public/',

现在它在根目录创建一个新文件夹js,其中包含所有文件。

我想压缩public/js/中的每个.js文件,然后将它们放入public/build/

我显然迷路了,你能帮帮我吗?

【问题讨论】:

    标签: node.js gruntjs grunt-contrib-uglify


    【解决方案1】:

    为满足您的要求,当building the files object dynamically您需要使用时;

    1. cwd 选项 - 描述如下:

      • cwd 所有src 匹配都相对于(但不包括)此路径。
    2. rename函数,描述为:

      rename 嵌入一个自定义函数,该函数返回一个包含新目标和文件名的字符串。为每个匹配的 src 文件调用此函数(在扩展名重命名和展平之后)。

    Gruntfile:

    下面的配置会满足你想要的结果。

    module.exports = function (grunt) {
    
      grunt.loadNpmTasks('grunt-contrib-uglify-es');
    
      grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
          options: {
            mangle: false,
            banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
          },
          build: {
    
            // Change your configuration to this...
            files: [{
              expand: true,
              cwd: 'public/js',
              src: '*.js',
              dest: 'public/build/',
              rename: function (dst, src) {
                return dst + '/' + src.replace('.js', '.min.js');
              }
            }]
          }
        }
      });
    
      grunt.registerTask('default', ['uglify']);
    };
    

    【讨论】:

    • 感谢您的解释:)
    猜你喜欢
    • 2020-07-01
    • 2020-02-25
    • 1970-01-01
    • 2017-11-11
    • 2019-12-19
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多