@tencentcloud/tui-emoji-plugin
Version:
表情回应插件
121 lines (115 loc) • 2.29 kB
JavaScript
const stylistic = require('@stylistic/eslint-plugin');
const customizedBaseConfig = stylistic.configs.customize({
semi: true,
jsx: false,
braceStyle: '1tbs',
});
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:@stylistic/recommended-extends',
],
overrides: [
{
env: {
node: true,
},
files: ['.eslintrc.{js,cjs}'],
parserOptions: {
sourceType: 'module',
},
},
{
env: {
browser: true,
},
files: ['*.ts'],
extends: [
'plugin:@typescript-eslint/recommended',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: { ...getCustomTypescriptRules() },
},
{
env: {
browser: true,
},
files: ['*.vue'],
extends: [
'plugin:vue/vue3-recommended',
'@vue/eslint-config-typescript/recommended',
],
parser: 'vue-eslint-parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {
...getCustomTypescriptRules(),
...getCustomVueRules(),
},
},
{
env: {
node: true,
es6: true,
},
files: ['scripts/*.js'],
},
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: [
'vue',
'@stylistic',
],
rules: {
...getCustomStylisticRules(),
},
ignorePatterns: [
'node_modules',
'build',
'dist',
'docs',
'assets',
'debug',
],
};
function getCustomTypescriptRules() {
return {
'@typescript-eslint/no-explicit-any': ['warn', {
ignoreRestArgs: true,
fixToUnknown: false,
}],
'@typescript-eslint/array-type': ['warn', {
default: 'array-simple',
readonly: 'array-simple',
}],
};
}
function getCustomVueRules() {
return {
'vue/attribute-hyphenation': 'off',
'vue/v-on-event-hyphenation': 'off',
'vue/multi-word-component-names': 'off',
};
}
function getCustomStylisticRules() {
return {
// shared rules
...customizedBaseConfig.rules,
// custom rules
// @stylistic/${rule}
};
}