/gulp-file-checksum

根据模版生成包含各种校验码的文件,支持 md5, sha, crc32以及自定义功能==

Primary LanguageJavaScriptMIT LicenseMIT

gulp-file-checksum Build Status Coverage Status

Installation

Install pakcage with NPM and add it to your development dependencies

npm install --save-dev gulp-file-checksum

Usage

Generate a checksum file

The following generages a file dist/package_checksum.txt in the format defined by the template.

const fileChecksum = require('gulp-file-checksum');
const template = `
MD5     : {md5}
SHA1    : {sha1}
CRC32   : {crc32}
size    : {size} Bytes
Datetime: {dateime}
`
gulp.task('checksum',
    gulp.src('dist/package.zip', {
        buffer: false // for large files
    })
    .pipe(fileChecksum({
        template: template,
        output: '{filename}_checksum.txt'
    }))
    .pipe(gulp.dest('dist'))
)

The contents of the checksum file will look like this:

MD5     : 2f90ce3426541817e0dfd01cae086b60
SHA1    : d817d144dd1397efc52b9ce1dfc9e5713e7265e6
CRC32   : dfc51702
size    : 7051797 Bytes
Datetime: 2018-07-28 21:48:34

Options

  • template - string

    A template allow users to customize the output format and use placeholder syntax({}) to define the output content at the specified location. The built-in placeholders are as follow:

    1. md5,sha1,sha256,sha512 etc. - All hash algorithms are provided by crypto

    2. crc1,crc8,crc24,crc32 etc. - All crc algorithms are provided by crc

    3. size - File size in bytes

    4. datetime - {datetime:YYYY-MM-DD HH:mm:ss A}, The time format please refer to the documentation of momentjs

    5. run - Run unix shell commands defined in shellCommand option via shelljs and get the results:

      fileChecksum({
          template: `{run:git-revision}`,
          shellCommands: {
              'git-revision': `
                  git rev-parse --short HEAD
              `
          }
      })
  • prefix & suffix - string [optional]

    Defines the prefix and suffix of the placeholder in your template. Default: { and }

  • output - string

    The name of output file. Support these placeholders: {basename}, {extname}, {filename};

  • plugins - class

    Sometimes you need to add a custom placeholder in your template, this option allows you to do that like the following example:

    // {time:yyyy-MM-dd}
    class FormatedTimePlugin {
        static get names() {
            return ['time'];
        }
        constructor(file, gulpOptions, placeholder) {
            const firstColonIndex = placeholder.indexOf(':');
            if(firstColonIndex > -1) {
                this.format = placeholder.substring(firstColonIndex);
            } else {
                this.format = "YYYY-MM-DDTHH:mm:ss.SSS"; // default format
            }
        }
        preprocess (template) {
            //
        }
        receiveChunk (chunk) {
            // ignore
        }
        finish(){
            return {
                time: someTimeLibray(new Date(), this.format);
            };
        }
    }
    // gulpfile.js
    fileChecksum({
        template: `
        Date: {time:YYYY-MM-DD}
        `.trim(),
        plugins: [FormatedTimePlugin]
    })