如何使用typescript-eslint验证打字稿文件的ejs模板

时间:2019-06-01 01:36:25

标签: typescript ejs jest typescript-eslint

我有一个用于打字稿文件的ejs模板,我需要使用#jest编写一个单元测试,以使用#typescript-eslint(不是tslint来验证我的模板的渲染打字稿输出,因为它将很快不推荐使用:{{3 }})

因此,我需要在我的spec文件中需要typescript-eslint模块,并通过以下代码运行对渲染的ejs的验证:

it('should be valid typescript file', () => {
        return ejs.renderFile('my-ejs-template.ts.ejs', {}).then(async (view) => {
            const eslint = require('@typescript-eslint/eslint-plugin');
            // what is next ???
        });
    });

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

首先在devDependencies中安装以下模块:

  • @ typescript-eslint / eslint-plugin
  • @ typescript-eslint / parser

第二,按如下所示将模块eslint导入您的规范文件中:

const eslint = require('eslint');

第三,创建一个.eslintrc.js配置文件来解析打字稿文件,例如:

module.exports = {
  env: {
    node: true,
    es6: true,
  },
  extends: ['plugin:@typescript-eslint/recommended'],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    sourceType: 'module',
    typescript: true,
    modules: true,
    ecmaVersion: 6,
    ecmaFeatures: {
      experimentalObjectRestSpread: true,
    },
  },
  plugins: ['@typescript-eslint'],
  rules: {
    indent: ['error', 4],
    'linebreak-style': ['error', 'unix'],
    quotes: ['error', 'single'],
    semi: ['error', 'always'],
  },
};

然后,将上述配置文件导入您的spec文件中,并创建一个函数以获取linter:

const configTsEslint = require('.eslintrc-typescript');
const tsLinter = () => {
    const Linter = eslint.Linter;
    return new Linter();
};

最后,按如下所示验证您的打字稿文件:

it('should be valid typescript file', () => {
        return ejs.renderFile('my-ejs-template.ts.ejs', {}).then(async (view) => {
            const result = tsLinter().verifyAndFix(view);
            expect(result.messages).toStrictEqual([]);
            expect(result.fixed).toBe(true);
        });
    });

您可以添加[typescript-eslint] [1]支持的规则