Skip to content

rakuten-frontend/grunt-charset

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grunt-charset

Convert text encoding and replace charset code.

npm Version Build Status Dependency Status

Overview

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">)

Getting started

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');

The "charset" task

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}']
      }]
    }
  }
});

Options

from

Type: 'String'
Default: UTF-8

Encoding of source charset. See supported encodings in iconv-lite.

to

Type: 'String'
Default: Shift_JIS

Encoding of output charset. This also depends on iconv-lite.

fileTypes

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}}"'
  }
}

Examples

Target file extensions

Add target extensions of code replacement. This setting replaces <meta charset=""> in ".shtml" files as well as ".html".

options: {
  fileTypes: {
    html5: {
      ext: ['.html', '.shtml']
    }
  }
}

Custom file types

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}}"?>'
    }
  }
}

License

Copyright (c) 2014-2017 Rakuten, Inc. Licensed under the MIT License.