All files / lintstaged index.ts

100% Statements 16/16
100% Branches 2/2
100% Functions 3/3
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 542x   2x 2x 2x 2x   2x 4x   4x 4x           4x                 4x 2x   2x     2x 1x     2x                                  
import Generator, { Answers } from 'yeoman-generator';
 
import { Filenames } from '../lib/enums/filenames';
import { Messages } from '../lib/enums/messages';
import { Names } from '../lib/enums/names';
import rootPkg from '../lib/helpers/package';
 
module.exports = class extends Generator {
  withPrettier = false;
  constructor(args: string | string[], config: any) {
    super(args, config);
    this.withPrettier = config.withPrettier;
  }
 
  answers!: Answers;
 
  async prompting(): Promise<void> {
    this.answers = await this.prompt({
      type: 'confirm',
      name: Names.LINT_STAGED,
      message: Messages.LINT_STAGED,
      default: false,
    });
  }
 
  writing() {
    if (this.answers[Names.LINT_STAGED]) {
      this.fs.append(this.destinationPath(Filenames.README), this.fs.read(this.templatePath(Filenames.README)));
 
      const lintStagedCommands = ['eslint . --fix', 'git add'];
 
      // add prettier command to lint-staged
      if (this.withPrettier) {
        lintStagedCommands.splice(1, 0, 'prettier --write');
      }
 
      this.fs.extendJSON(this.destinationPath(Filenames.PACKAGE_JSON), {
        devDependencies: {
          husky: rootPkg.devDependencies.husky,
          'lint-staged': rootPkg.devDependencies['lint-staged'],
        },
        'lint-staged': {
          'src/**/*.{js,ts}': lintStagedCommands,
        },
        husky: {
          hooks: {
            'pre-commit': 'lint-staged',
          },
        },
      });
    }
  }
};