ESLint custom rules are useful

Here’s an example of a custom eslint rule that detects usage of the knex library in a unit test file and reports it as a linter error.

module.exports = {
  rules: {
    'no-db-unit-tests': {
      create: function (context) {
        return {
          ImportDeclaration(node) {
            const fileName = context.getFilename();
            if (node.specifiers) {
              node.specifiers.map((item) => {
                if (
                  item.local.name === 'knex' &&
                  fileName.includes('unit.spec')
                ) {
                  return context.report(
                    node,
                    item.loc,
                    `Do not use ${item.local.name} in unit test file ${fileName}`,
                  );
                }

                return null;
              });
            }
          },
        };
      },
    },
  },
};

Tech mentioned