【问题标题】:How can I validate an ejs template of a typescript file with typescript-eslint如何使用 typescript-eslint 验证 typescript 文件的 ejs 模板
【发布时间】:2019-10-17 14:03:13
【问题描述】:

我有一个用于 typescript 文件的 ejs 模板,我需要使用 #jest 编写一个单元测试,以使用 #typescript-eslint 验证我的模板的渲染 typescript 输出(不是 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 ???
        });
    });

任何帮助将不胜感激

【问题讨论】:

    标签: typescript jestjs ejs typescript-eslint


    【解决方案1】:

    首先在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-28
      • 2019-11-14
      • 2023-02-26
      • 2012-10-16
      • 1970-01-01
      • 2020-09-09
      • 2020-04-26
      • 2019-12-06
      • 2021-06-01
      相关资源
      最近更新 更多