Updating file references in a json file via a grunt task

前端 未结 3 578
无人共我
无人共我 2021-02-04 07:15

I\'m a JavaScript developer and fairly new to creating a build process from scratch. I chose to use Grunt for my current project and have created a GruntFile that does about 90%

3条回答
  •  北海茫月
    2021-02-04 07:32

    I disagree with the other answers here.

    1) Why use grunt.file.write instead of fs? grunt.file.write is just a wrapper for fs.writeFilySync (see code here).

    2) Why use fs.writeFileSync when grunt makes it really easy to do stuff asynchronously? There's no doubt that you don't need async in a build process, but if it's easy to do, why wouldn't you? (It is, in fact, only a couple characters longer than the writeFileSync implementation.)

    I'd suggest the following:

    var fs = require('fs');
    grunt.registerTask('writeManifest', 'Updates the project manifest', function() {
        var manifest = require('./path/to/manifest'); // .json not necessary with require
        manifest.fileReference = '/new/file/location';
        // Calling this.async() returns an async callback and tells grunt that your
        // task is asynchronous, and that it should wait till the callback is called
        fs.writeFile('./path/to/manifest.json', JSON.stringify(manifest, null, 2), this.async());
    
        // Note that "require" loads files relative to __dirname, while fs
        // is relative to process.cwd(). It's easy to get burned by that.
    });
    

提交回复
热议问题