gulp生成utf-8文件的同时,也生成gbk版本

问题

虽然现在网站开发都用utf-8文件编码格式了,但是难免有些项目要用gbk编码格式,然后我们用gulp做工作流工具的话,它只能生成utf-8文件,那么怎么转换成gbk文件呢?

思路

其实解题思路跟gulp关系不大,需要用到两个方法:fs.readFile和fs.writeFile,以及一个包:iconv-lite。

你可能会先gulp.pipe()一连串操作,在最后加上一个.on('end',func)来监听最后一个操作的完成,通常最后一个操作的完成就意味着dest,然后我们拿到这个dest的utf-8文件,先读取文件内容然后转码,然后写入,即可。

代码

function compileJs() {

    gulp.src(projectPath.source.js + '**')
        .pipe(gulp.dest(projectPath.dist.js))
        .on('end', function () {

                fs.readFile('public/static/js/individualworks/subjectstarter.js', 'utf-8', function (err, data) {
                    var gbkCode = new Buffer(iconv.encode(data, 'gbk'));
                    fs.writeFile('public/static/js/individualworks/subjectstarter_gbk.js', gbkCode, function (err) {
                        if (err) {
                            return;
                        }
                        console.log('gbk文件成功生成');
                    });
                });

        });
}

可以看到我为了最简单举例,除了dest了一下js文件,没有做其他的操作。等dest完成后,我开始读文件,按照'utf-8'读,之后转换成gbk,然后生成buffer对象,再把这个buffer对象写入_gbk.js文件即可,就这么简单。

小问题

这样生成的_gbk.js文件,用Sublime Text打开会默认用utf-8模式打开,即使你装了gbk插件。可能是跟文件头有关系。用记事本打开是正常的。

其实这个文件根本没必要打开,直接用就可以了。

你可能感兴趣的:(gulp生成utf-8文件的同时,也生成gbk版本)