使用 Uglify 的多个目标目录

Multiple destination directories using Uglify

如果我有以下file/directory结构:

somemodule/
└── amd
└── src
    └── foo.js
someothermodule/
└── amd
└── src
    └── bar.js

我能让 grunt-contrib-uglify 产生以下缩小的输出吗?

somemodule/
└── amd
└── build
    └── foo.min.js
└── src
    └── foo.js
someothermodule/
└── amd
└── build
    └── bar.min.js
└── src
    └── bar.js

到目前为止,我已经尝试了以下 Grunt 配置:

grunt.initConfig({
    uglify: {
        dynamic_mappings: {
            files: [
                {
                    expand: true,
                    src: ['**/amd/src/*.js', '!**/node_modules/**'],
                    dest: 'build/',
                    ext: '.min.js',
                    extDot: 'first'
                },
            ],
        }
    }
});

这给了我一些东西,但不是我想要的(输出放在我项目根目录中的 build/ 目录中):

build/
├── somemodule
│   └── amd
│       └── src
│           └── foo.min.js
└── someothermodule
    └── amd
        └── src
            └── bar.min.js

我对从这里到哪里有点困惑 - 任何指点将不胜感激。如果需要,非常乐意详细说明任何事情。

-戴夫

设法根据这个 SO 问题找出我想做的事情:How to grunt-uglify multiple script files while keeping folder structure

我最终使用了以下重命名函数:

files: grunt.file.expandMapping(['**/amd/src/*.js', '!**/node_modules/**'], '', {
           rename: function(destBase, destPath) {
               destPath = destPath.replace('src', 'build');
               destPath = destPath.replace('.js', '.min.js');
               return destPath;
           }
})