Convert text encoding and replace charset code.
This is a Grunt plugin for converting charset of multiple file types. grunt-charset operates 2 things.
- Convert text encoding using iconv-lite.
- Replace code of charset setting. (e.g.
<meta charset="UTF-8">
to<meta charset="Shift_JIS">
)
If you haven't used Grunt before, be sure to check out the Getting started guide.
Install this plugin with this command:
$ npm install grunt-charset --save-dev
Once the plugin has been installed, it may be enabled inside your "Gruntfile.js" with this line of JavaScript:
grunt.loadNpmTasks('grunt-charset');
In your project's Gruntfile, add a section named charset
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
charset: {
dist: {
options: {
from: 'UTF-8',
to: 'Shift_JIS',
fileTypes: {
// Code replacement config (Optional)
}
},
files: [{
expand: true,
cwd: 'src',
dest: 'dist',
src: ['**/*.{html,css}']
}]
}
}
});
Type: 'String'
Default: UTF-8
Encoding of source charset. See supported encodings in iconv-lite.
Type: 'String'
Default: Shift_JIS
Encoding of output charset. This also depends on iconv-lite.
Type: 'Object'
Default: (See below)
Configuration of charset code replacement.
fileTypes: {
html5: {
ext: ['.html'],
detect: /<meta\s+charset=["']?.+?["']?\s*\/?>/i,
replace: '<meta charset="{{charset}}">'
},
html4: {
ext: ['.html'],
detect: /<meta\s+http-equiv=["']?Content-Type["']?\scontent=["']?.*?charset=.+?["']?\s*\/?>/i,
replace: '<meta http-equiv="Content-Type" content="text/html; charset={{charset}}">'
},
css: {
ext: ['.css'],
detect: /^@charset\s+(".+?"|'.+?')/,
replace: '@charset "{{charset}}"'
}
}
Add target extensions of code replacement.
This setting replaces <meta charset="">
in ".shtml" files as well as ".html".
options: {
fileTypes: {
html5: {
ext: ['.html', '.shtml']
}
}
}
You can add custom replacement config.
In this case, <?xml ...?>
code blocks in ".xml" files will be replaced.
options: {
fileTypes: {
xml: {
ext: ['.xml'],
detect: /<\?xml version="1.0" encoding=".*?"\?>/,
replace: '<?xml version="1.0" encoding="{{charset}}"?>'
}
}
}
Copyright (c) 2014-2017 Rakuten, Inc. Licensed under the MIT License.