eslint-config-alloy
Version:
AlloyTeam ESLint 规则
79 lines (75 loc) • 2.22 kB
text/typescript
/* eslint-disable @typescript-eslint/no-require-imports */
import pkg from '../package.json';
export const NAMESPACE_CONFIG = {
base: {
/** bad.js good.js 的后缀 */
exampleExtension: 'js',
/** Prism 语言设置 */
prismLanguage: 'js',
/** 插件前缀 */
rulePrefix: '',
/** 规则配置 */
ruleConfig: require('./rules/base.json'),
/** 各插件的文档地址 */
getDocsUrl: (rule: string) => `https://eslint.org/docs/rules/${rule}`,
/** 插件的名称 */
pluginName: undefined,
},
react: {
exampleExtension: 'js',
prismLanguage: 'jsx',
rulePrefix: 'react/',
ruleConfig: require('./rules/react.json'),
getDocsUrl: (rule: string) =>
`https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/${rule.replace(/.*\//, '')}.md`,
pluginName: 'eslint-plugin-react',
},
vue: {
exampleExtension: 'vue',
prismLanguage: 'html',
rulePrefix: 'vue/',
ruleConfig: require('./rules/vue.json'),
getDocsUrl: (rule: string) => `https://eslint.vuejs.org/rules/${rule.replace(/.*\//, '')}.html`,
pluginName: 'eslint-plugin-vue',
},
typescript: {
exampleExtension: 'ts',
prismLanguage: 'ts',
rulePrefix: '@typescript-eslint/',
ruleConfig: require('./rules/typescript.json'),
getDocsUrl: (rule: string) => `https://typescript-eslint.io/rules/${rule.replace(/.*\//, '')}/`,
pluginName: '@typescript-eslint/eslint-plugin',
},
};
export type Namespace = keyof typeof NAMESPACE_CONFIG;
export const NAMESPACES = Object.keys(NAMESPACE_CONFIG) as Namespace[];
/** 写入 eslintrc 中的元信息 */
export function buildEslintrcMeta() {
return `
/**
* ${pkg.description}
* ${pkg.homepage}
*
* 贡献者:
* ${pkg.author}
* ${pkg.contributors.join('\n * ')}
*
* 依赖版本:
* ${[
'eslint',
'@babel/core',
'@babel/eslint-parser',
'@babel/preset-react',
'eslint-plugin-react',
'vue-eslint-parser',
'eslint-plugin-vue',
'@typescript-eslint/parser',
'@typescript-eslint/eslint-plugin',
]
.map((key) => `${key} ${(pkg as any).devDependencies[key]}`)
.join('\n * ')}
*
* 此文件是由脚本 scripts/build.ts 自动生成
*/
`;
}