动态映射和Concat与Grunt Uglify

时间:2016-08-09 15:36:29

标签: gruntjs grunt-contrib-uglify

我正在尝试使用dynamic mapping并使用Grunt Uglify连接Javascript文件。

我有以下无法正常工作。

这是我的文件夹结构:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test (output folder)

这是我所期待的:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test
        |- billing-one.min.js (this file includes billing-one.js AND custom.js)
        |- billing-two.min.js (this file includes billing-two.js AND custom.js)

这就是我目前所得到的:

javascript
    |- account
        |- custom.js
    |- bills
        |- billing-one.js
        |- billing-two.js
    |- test
        |- bills
            |- billing-one.min.js (this file includes just billing-one.js)
            |- billing-two.min.js (this file includes just billing-two.js)
        |- account 
            |- custom.min.js (this file includes just custom.js)

它不包含custom.js文件,而是创建了2个文件夹test/account/custom.min.js 'test / bills / billing-one.js' - 见上文

options: {
    beautify: true,
    mangle: false,
    compress: false,
    preserveComments: 'all'
},
files: [
  {
    expand: true,     // Enable dynamic expansion.
    cwd: 'javascript/',      // Src matches are relative to this path.
    src: [[bills/*.js'], 'account/custom.js'], // Actual pattern(s) to match.
    dest: 'test/',   // Destination path prefix.
    ext: '.min.js',   // Dest filepaths will have this extension.
    extDot: 'first'   // Extensions in filenames begin after the first dot
  },
],

我希望bills/文件夹中的所有Javascript文件都包含custom.js

所以如果有2个文件: bills/billing-one.js bills/billing-two.js

我希望test /文件夹包含

test/billing-one.min.js(此文件包含billing-one + custom.js) test/billing-two.min.js(此文件包含billing-two + custom.js)

我不想硬编码文件名。如果将更多文件添加到bills/文件夹,则应该连续并输出到test/文件夹。

任何帮助都非常感激。

自收到回复后更新:

使用以下更新代码确保其按预期工作 - 否则在运行GRUNT时会遇到错误。

我确实尝试通过提交编辑进行审核来添加此答案。但它被所有人都知道所有优秀的mods被拒绝了两次......实际上它是一个有效的输入并改进了给出的答案。请注意[]cwdsrc更改。

files: [{
    expand: true,
    cwd: 'javascript/bills/',
    src: ['*.js'],
    dest: 'test/',
    ext: '.min.js',
    extDot: 'first'
}],

1 个答案:

答案 0 :(得分:1)

您可以使用grunt-contrib-uglify的banner属性来附加内容。 https://github.com/gruntjs/grunt-contrib-uglify#banner

这是grunt配置:



grunt.initConfig({
    uglify: {
      options: {
        banner: grunt.file.read('./javascript/account/custom.js'),
        beautify: true,
        mangle: false,
        compress: false,
        preserveComments: 'all'
      },
      files: {
        expand: true,
        cwd: 'javascript/',
        src: ['bills/*.js'],
        dest: 'test/',
        ext: '.min.js',
        extDot: 'first'
      },
    }
  });




在上面的配置中,bills文件夹中的每个文件都将获取banner属性中配置的custom.js的内容。

我希望它可以帮到你。