使用Uglify的多个目标目录

时间:2015-01-13 05:27:31

标签: gruntjs uglifyjs grunt-contrib-uglify

如果我有以下文件/目录结构:

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

我有点卡在这里从哪里去 - 任何指针都会受到赞赏。如果需要,非常乐意详细说明。

-Dave

1 个答案:

答案 0 :(得分:1)

管理根据这个问题找出我想做的事情: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;
           }
})