0

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

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

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

-戴夫

4

1 回答 1

1

根据这个 SO 问题设法找出我想要做的事情:How to grunt-uglify multiple script files 同时保持文件夹结构

我结束了以下重命名功能:

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;
           }
})
于 2015-01-13T06:33:33.800 回答