Frage

I need to minify a set of JSON files (language files) with Grunt/grunt-contrib-uglify:

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
        build: {
            src: 'src/main/app/resources/locales/*/*.json',
            dest: 'target/resources/locales/*/*.json'
        }
    }
});

What I'm getting is:

Files: src/main/app/resources/locales/en/messages.json -> target/*/*.json
Minifying with UglifyJS...Reading src/main/app/resources/locales/en/messages.json...OK
>> Uglifying source "src/main/app/resources/locales/en/messages.json" failed.
Warning: Uglification failed. Use --force to continue.

I'm starting to wonder, does uglify work on pure JSON files, or is it intended for JavaScript source files only? The JSON file is surely well formed, it runs in the application in its non-minimized form.

War es hilfreich?

Lösung

The grunt-json-minify (as indicated in user2806181's answer) works OK (thanks, by the way), but it only modifies files in place. Inspired by the answer, I've found one that's a bit more advanced: grunt-minjson:

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    minjson: {
        build: {
            files: { 
                'target/locales/en/messages.json':
                    'resource/locales/en/messages.json'
            }
        }
    }
});

Andere Tipps

I guess UglifyJS does not work on pure JSON, because its not valid javascript.

Take a look at this link: https://github.com/mishoo/UglifyJS2/issues/156

But there are several grunt-plugins you can use, for example: https://npmjs.org/package/grunt-json-minify

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top