1

我有一个用于打字稿文件的 ejs 模板,我需要使用 #jest 编写一个单元测试,以使用 #typescript-eslint 验证我的模板的渲染打字稿输出(不是 tslint,因为它很快就会被弃用:https://medium。 com/palantir/tslint-in-2019-1a144c2317a9 )

因此,我需要在我的规范文件中使用 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 ???
        });
    });

任何帮助将不胜感激

4

1 回答 1

2

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

  • @typescript-eslint/eslint-plugin
  • @typescript-eslint/解析器

其次,在你的 spec 文件中导入模块 eslint,如下所示:

const eslint = require('eslint');

第三,创建一个 .eslintrc.js 配置文件来解析 typescript 文件,比如:

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

然后,在您的规范文件中导入上述配置文件并创建一个函数来获取 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] 支持的规则

于 2019-06-30T15:52:20.153 回答