Skip to content

Commit 026c7f2

Browse files
authored
feat: add @nutui/eslint-config (#2405)
1 parent 89769cb commit 026c7f2

File tree

66 files changed

+253
-388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+253
-388
lines changed

.eslintignore

-1
This file was deleted.

.eslintrc

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"root": true,
3+
"extends": ["@nutui/eslint-config"],
4+
"ignorePatterns": [
5+
"packages/nutui-playground/dist/**",
6+
"packages/nutui-taro-demo/**/*",
7+
"packages/nutui-touch-emulator/dist/**",
8+
"packages/nutui-vscode-extension/dist/**",
9+
"src/sites/**"
10+
]
11+
}

jd/generate-nutui-taro-vue.cjs

+6-4
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,19 @@ config.nav.map((item) => {
1111
let { name, exclude, taro } = element;
1212
if (taro == true) {
1313
const filePath = path.join(`src/packages/__VUE/${name.toLowerCase()}/index.taro.vue`);
14-
importStr += `import ${name} from './__VUE/${name.toLowerCase()}/index${
15-
fs.existsSync(filePath) ? '.taro' : ''
16-
}.vue';\n`;
14+
if (name !== 'Icon') {
15+
importStr += `import ${name} from './__VUE/${name.toLowerCase()}/index${
16+
fs.existsSync(filePath) ? '.taro' : ''
17+
}.vue';\n`;
18+
}
1719
importScssStr += `import './__VUE/${name.toLowerCase()}/index.scss';\n`;
1820
if (exclude != true) {
1921
packages.push(name);
2022
}
2123
}
2224
});
2325
});
24-
let installFunction = `function install(app: any) {
26+
let installFunction = `function install(app: App) {
2527
const packages = [${packages.join(',')}];
2628
packages.forEach((item:any) => {
2729
if (item.install) {

jd/generate-nutui.cjs

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ const methods = [];
1010
config.nav.map((item) => {
1111
item.packages.forEach((element) => {
1212
let { name, type, exclude } = element;
13-
importStr += `import ${name} from './__VUE/${name.toLowerCase()}/index.vue';\n`;
13+
if (name !== 'Icon') {
14+
importStr += `import ${name} from './__VUE/${name.toLowerCase()}/index.vue';\n`;
15+
}
1416
if (type === 'methods') {
1517
importStr += `import { show${name} } from './__VUE/${name.toLowerCase()}/index';\n`;
1618
methods.push(`show${name}`);

package.json

+6-32
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@
5656
"test": "vitest",
5757
"test:ui": "vitest --ui --coverage",
5858
"test:c": "vitest --coverage",
59-
"lint": "prettier --check .",
60-
"lint:fix": "prettier --write .",
59+
"lint": "eslint --ext .vue,.ts,.tsx,.js,.jsx src/",
60+
"lint:fix": "pnpm lint --fix",
6161
"copydocs": "node ./jd/copymd.cjs",
6262
"attrs:taro": "node ./jd/createAttributes.cjs taro",
6363
"attrs": "node ./jd/createAttributes.cjs",
@@ -84,21 +84,15 @@
8484
"@napi-rs/canvas": "^0.1.39",
8585
"@tarojs/taro": "3.6.8",
8686
"@types/node": "^17.0.16",
87-
"@typescript-eslint/eslint-plugin": "^5.60.1",
88-
"@typescript-eslint/parser": "^5.60.1",
8987
"@vitejs/plugin-vue": "^4.2.0",
9088
"@vitejs/plugin-vue-jsx": "^3.0.1",
9189
"@vitest/coverage-v8": "^0.32.2",
9290
"@vitest/ui": "^0.32.2",
93-
"@vue/eslint-config-prettier": "^7.1.0",
94-
"@vue/eslint-config-typescript": "^11.0.3",
9591
"@vue/test-utils": "^2.4.0",
9692
"autoprefixer": "^10.3.4",
9793
"codesandbox": "^2.2.3",
9894
"eslint": "^8.44.0",
99-
"eslint-plugin-prettier": "^4.2.1",
100-
"eslint-plugin-vue": "^9.15.1",
101-
"eslint-visitor-keys": "^3.4.1",
95+
"@nutui/eslint-config": "workspace:*",
10296
"fs-extra": "^9.1.0",
10397
"highlight.js": "^11.8.0",
10498
"husky": "^6.0.0",
@@ -117,36 +111,16 @@
117111
"vue": "^3.3.4",
118112
"vue-tsc": "^1.8.4"
119113
},
120-
"eslintConfig": {
121-
"root": true,
122-
"env": {
123-
"node": true
124-
},
125-
"extends": [
126-
"plugin:vue/vue3-essential",
127-
"eslint:recommended",
128-
"@vue/typescript/recommended",
129-
"@vue/prettier",
130-
"@vue/prettier/@typescript-eslint"
131-
],
132-
"parserOptions": {
133-
"ecmaVersion": 2020
134-
},
135-
"rules": {
136-
"vue/no-unused-components": "off",
137-
"no-debugger": "off"
138-
}
139-
},
140114
"engines": {
141115
"node": ">= 16.0.0",
142116
"pnpm": ">= 7.0.0"
143117
},
144118
"lint-staged": {
145-
"*.md": "prettier --write",
146-
"*.{ts,tsx,js,vue,scss}": "prettier --write"
119+
"*.{ts,tsx,js,jsx,vue,scss,md}": "prettier --write",
120+
"src/**/*.{ts,tsx,js,jsx,vue}": "eslint --fix"
147121
},
148122
"repository": {
149123
"type": "git",
150124
"url": "https://github.com/jdf2e/nutui.git"
151125
}
152-
}
126+
}
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# ESLint Config of NutUI Vue
2+
3+
## Install
4+
5+
```sh
6+
# pnpm
7+
pnpm add @nutui/eslint-config -D
8+
# npm
9+
npm i @nutui/eslint-config -D
10+
# yarn
11+
yarn add @nutui/eslint-config -D
12+
```
13+
14+
## Usage
15+
16+
```json
17+
{
18+
"extends": "@nutui/eslint-config"
19+
}
20+
```

packages/nutui-eslint-config/index.js

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
module.exports = {
2+
extends: ['plugin:vue/base', 'eslint:recommended', 'plugin:vue/vue3-recommended', 'prettier'],
3+
parser: 'vue-eslint-parser',
4+
parserOptions: {
5+
parser: '@typescript-eslint/parser',
6+
ecmaVersion: 2020,
7+
sourceType: 'module',
8+
ecmaFeatures: {
9+
jsx: true
10+
}
11+
},
12+
plugins: ['vue', '@typescript-eslint'],
13+
env: {
14+
es6: true,
15+
node: true,
16+
browser: true,
17+
jest: true
18+
},
19+
globals: {
20+
vi: true,
21+
NodeJS: true,
22+
TaroGeneral: true
23+
},
24+
rules: {
25+
'@typescript-eslint/no-explicit-any': 'off',
26+
// '@typescript-eslint/no-unused-vars': 'error',
27+
// enable type: Function Object
28+
'@typescript-eslint/ban-types': 'off',
29+
'@typescript-eslint/no-var-requires': 'off',
30+
'vue/no-v-html': 'off',
31+
'vue/first-attribute-linebreak': 'off',
32+
'vue/multi-word-component-names': 'off',
33+
'vue/no-v-text-v-html-on-component': 'off',
34+
// will be fixed
35+
'vue/attributes-order': 'off',
36+
'vue/attribute-hyphenation': 'off',
37+
'vue/v-on-event-hyphenation': 'off',
38+
'vue/v-slot-style': 'off',
39+
'no-unused-vars': 'off',
40+
'vue/valid-v-for': 'off',
41+
'no-empty': 'off'
42+
}
43+
};
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"name": "@nutui/eslint-config",
3+
"version": "0.0.1",
4+
"description": "ESLint Config of NutUI Vue",
5+
"keywords": [
6+
"nutui",
7+
"vue",
8+
"eslint",
9+
"jdf2e"
10+
],
11+
"author": "jdf2e",
12+
"license": "MIT",
13+
"main": "index.js",
14+
"publishConfig": {
15+
"access": "public",
16+
"registry": "https://registry.npmjs.org/"
17+
},
18+
"repository": {
19+
"type": "git",
20+
"url": "https://github.com/jdf2e/nutui.git",
21+
"directory": "packages/nutui-eslint-config"
22+
},
23+
"bugs": {
24+
"url": "https://github.com/jdf2e/nutui/issues"
25+
},
26+
"dependencies": {
27+
"@typescript-eslint/eslint-plugin": "^5.60.1",
28+
"@typescript-eslint/parser": "^5.60.1",
29+
"eslint-config-prettier": "^8.8.0",
30+
"eslint-plugin-vue": "^9.15.1"
31+
},
32+
"devDependencies": {
33+
"eslint": "^8.44.0"
34+
},
35+
"peerDependencies": {
36+
"eslint": "^7.32.0 || ^8.44.0"
37+
}
38+
}

packages/nutui-touch-emulator/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ Touch Emulator for NutUI.
88

99
```sh
1010
# pnpm
11-
pnpm i @nutui/touch-emulator
11+
pnpm add @nutui/touch-emulator
1212

1313
# npm
14-
npm i @nutui/touch-emulator
14+
npm install @nutui/touch-emulator
1515

1616
# yarn
1717
yarn add @nutui/touch-emulator

0 commit comments

Comments
 (0)