Update
This commit is contained in:
parent
ba20685f2e
commit
e5546e21ad
@ -8,4 +8,4 @@ Personal ESLint config. Guaranteed to have no useless polyfills.
|
||||
- ✅ [react](https://github.com/jsx-eslint/eslint-plugin-react/pull/3429)
|
||||
- ✅ [unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn/pull/1886)
|
||||
- ❌ [import](https://github.com/un-ts/eslint-plugin-import-x/issues/29)
|
||||
- ❌ [jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/978)
|
||||
- ❌ [jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/978, supports flat config)
|
||||
|
9
dist/package.json
vendored
9
dist/package.json
vendored
@ -1,9 +1,10 @@
|
||||
{
|
||||
"name": "@aet/eslint-rules",
|
||||
"version": "1.0.1-beta.13",
|
||||
"version": "1.0.1-beta.15",
|
||||
"license": "UNLICENSED",
|
||||
"bin": {
|
||||
"eslint-install": "./install.js"
|
||||
"eslint-install": "install.js",
|
||||
"eslint-print": "print-config.sh"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"eslint": "^8.57.0",
|
||||
@ -19,7 +20,7 @@
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@typescript-eslint/type-utils": "^8.0.0",
|
||||
"@typescript-eslint/utils": "^8.0.0",
|
||||
"@eslint-react/eslint-plugin": "^1.8.0",
|
||||
"@eslint-react/eslint-plugin": "1.7.1",
|
||||
"aria-query": "^5.3.0",
|
||||
"axe-core": "^4.10.0",
|
||||
"axobject-query": "4.1.0",
|
||||
@ -63,4 +64,4 @@
|
||||
"**/is-core-module": "file:./overrides/is-core-module",
|
||||
"**/supports-preserve-symlinks-flag": "file:./overrides/supports-preserve-symlinks-flag"
|
||||
}
|
||||
}
|
||||
}
|
2
dist/print-config.sh
vendored
Normal file
2
dist/print-config.sh
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
node -e "console.dir(require('./.eslintrc.js'), { depth: null })"
|
@ -45,6 +45,7 @@
|
||||
"picocolors": "^1.0.1",
|
||||
"prettier": "^3.3.3",
|
||||
"prop-types": "^15.8.1",
|
||||
"terser": "^5.31.3",
|
||||
"type-fest": "^4.23.0",
|
||||
"typescript": "^5.5.4"
|
||||
},
|
||||
|
47
pnpm-lock.yaml
generated
47
pnpm-lock.yaml
generated
@ -132,6 +132,9 @@ importers:
|
||||
prop-types:
|
||||
specifier: ^15.8.1
|
||||
version: 15.8.1
|
||||
terser:
|
||||
specifier: ^5.31.3
|
||||
version: 5.31.3
|
||||
type-fest:
|
||||
specifier: ^4.23.0
|
||||
version: 4.23.0
|
||||
@ -923,6 +926,9 @@ packages:
|
||||
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/source-map@0.3.6':
|
||||
resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0':
|
||||
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
||||
|
||||
@ -1158,6 +1164,9 @@ packages:
|
||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||
hasBin: true
|
||||
|
||||
buffer-from@1.1.2:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
|
||||
call-me-maybe@1.0.2:
|
||||
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
|
||||
|
||||
@ -1197,6 +1206,9 @@ packages:
|
||||
color-name@1.1.4:
|
||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||
|
||||
commander@2.20.3:
|
||||
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
||||
|
||||
common-path-prefix@3.0.0:
|
||||
resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
|
||||
|
||||
@ -1782,6 +1794,13 @@ packages:
|
||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
source-map-support@0.5.21:
|
||||
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
|
||||
|
||||
source-map@0.6.1:
|
||||
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
stable-hash@0.0.4:
|
||||
resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
|
||||
|
||||
@ -1813,6 +1832,11 @@ packages:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
terser@5.31.3:
|
||||
resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
text-table@0.2.0:
|
||||
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
|
||||
|
||||
@ -2843,6 +2867,11 @@ snapshots:
|
||||
|
||||
'@jridgewell/set-array@1.2.1': {}
|
||||
|
||||
'@jridgewell/source-map@0.3.6':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.5
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.25':
|
||||
@ -3131,6 +3160,8 @@ snapshots:
|
||||
node-releases: 2.0.18
|
||||
update-browserslist-db: 1.1.0(browserslist@4.23.3)
|
||||
|
||||
buffer-from@1.1.2: {}
|
||||
|
||||
call-me-maybe@1.0.2: {}
|
||||
|
||||
callsites@3.1.0: {}
|
||||
@ -3168,6 +3199,8 @@ snapshots:
|
||||
|
||||
color-name@1.1.4: {}
|
||||
|
||||
commander@2.20.3: {}
|
||||
|
||||
common-path-prefix@3.0.0: {}
|
||||
|
||||
concat-map@0.0.1: {}
|
||||
@ -3768,6 +3801,13 @@ snapshots:
|
||||
|
||||
slash@3.0.0: {}
|
||||
|
||||
source-map-support@0.5.21:
|
||||
dependencies:
|
||||
buffer-from: 1.1.2
|
||||
source-map: 0.6.1
|
||||
|
||||
source-map@0.6.1: {}
|
||||
|
||||
stable-hash@0.0.4: {}
|
||||
|
||||
string-argv@0.3.2: {}
|
||||
@ -3794,6 +3834,13 @@ snapshots:
|
||||
|
||||
supports-preserve-symlinks-flag@1.0.0: {}
|
||||
|
||||
terser@5.31.3:
|
||||
dependencies:
|
||||
'@jridgewell/source-map': 0.3.6
|
||||
acorn: 8.12.1
|
||||
commander: 2.20.3
|
||||
source-map-support: 0.5.21
|
||||
|
||||
text-table@0.2.0: {}
|
||||
|
||||
tmp@0.0.33:
|
||||
|
@ -6,6 +6,7 @@ import esbuild from 'esbuild';
|
||||
import type { Plugin } from 'esbuild';
|
||||
import { memoize } from 'lodash';
|
||||
import { gray, green } from 'picocolors';
|
||||
import { minify_sync } from 'terser';
|
||||
import { dependencies } from '../dist/package.json';
|
||||
import { buildLocalRules } from './build-local-rules';
|
||||
import { dts } from './dts';
|
||||
@ -65,15 +66,15 @@ if (process.env.DEBUG) {
|
||||
});
|
||||
}
|
||||
|
||||
function bundle(
|
||||
async function bundle(
|
||||
entry: string,
|
||||
outfile = entry
|
||||
.replace('./packages/', './dist/')
|
||||
.replace('src/', '')
|
||||
.replace('.ts', '.js'),
|
||||
options?: esbuild.BuildOptions,
|
||||
options?: esbuild.BuildOptions & { treeShaking?: boolean },
|
||||
) {
|
||||
return esbuild.build({
|
||||
const output = await esbuild.build({
|
||||
entryPoints: [entry],
|
||||
outfile,
|
||||
bundle: true,
|
||||
@ -90,6 +91,30 @@ function bundle(
|
||||
},
|
||||
...options,
|
||||
});
|
||||
|
||||
if (options?.treeShaking) {
|
||||
const [text, setText] = await useText(outfile);
|
||||
const minified = minify_sync(text, {
|
||||
module: true,
|
||||
compress: {
|
||||
conditionals: true,
|
||||
dead_code: true,
|
||||
defaults: false,
|
||||
evaluate: true,
|
||||
passes: 3,
|
||||
pure_new: true,
|
||||
side_effects: true,
|
||||
unused: true,
|
||||
},
|
||||
mangle: false,
|
||||
format: {
|
||||
comments: true,
|
||||
},
|
||||
});
|
||||
setText(minified.code!);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
async function editPackageJson() {
|
||||
@ -134,6 +159,9 @@ async function main() {
|
||||
bundleType('./src/prettier.ts', './dist/prettier.d.ts');
|
||||
bundleType('./src/types.ts', './dist/types.d.ts');
|
||||
|
||||
const unminify = { minify: false };
|
||||
const treeShake = { treeShaking: true, minify: false };
|
||||
|
||||
console.log('Building packages...');
|
||||
await Promise.all([
|
||||
bundle('./packages/eslint-plugin-jsx-a11y/src/index.js'),
|
||||
@ -142,10 +170,10 @@ async function main() {
|
||||
bundle('./packages/eslint-import-resolver-typescript/src/index.ts'),
|
||||
bundle('./src/rules/index.ts', './dist/eslint-plugin-rules/index.js'),
|
||||
bundle('./src/local/index.ts', './dist/eslint-plugin-local/index.js'),
|
||||
bundle('./src/index.ts', './dist/index.js'),
|
||||
bundle('./src/types.ts', './dist/types.js'),
|
||||
bundle('./src/prettier.ts', './dist/prettier.js'),
|
||||
bundle('./src/install.ts', './dist/install.js', { minify: false }),
|
||||
bundle('./src/index.ts', './dist/index.js', unminify),
|
||||
bundle('./src/types.ts', './dist/types.js', unminify),
|
||||
bundle('./src/prettier.ts', './dist/prettier.js', unminify),
|
||||
bundle('./src/install.ts', './dist/install.js', treeShake),
|
||||
editPackageJson(),
|
||||
]);
|
||||
|
||||
|
25
src/env.ts
25
src/env.ts
@ -6,39 +6,48 @@ import { tailwind } from './presets/tailwind';
|
||||
import { reactQuery } from './presets/misc';
|
||||
import { testingLibrary } from './presets/testing-library';
|
||||
|
||||
const middlewares = {
|
||||
react,
|
||||
reactRefresh,
|
||||
tailwind,
|
||||
storybook,
|
||||
reactQuery,
|
||||
testingLibrary,
|
||||
};
|
||||
|
||||
export const envs: {
|
||||
dependency: string;
|
||||
eslintPlugin?: string;
|
||||
middleware: Middleware;
|
||||
middleware: keyof typeof middlewares;
|
||||
}[] = [
|
||||
{
|
||||
dependency: 'react',
|
||||
middleware: react,
|
||||
middleware: 'react',
|
||||
},
|
||||
{
|
||||
dependency: '@vitejs/plugin-react',
|
||||
eslintPlugin: 'eslint-plugin-react-refresh',
|
||||
middleware: reactRefresh,
|
||||
middleware: 'reactRefresh',
|
||||
},
|
||||
{
|
||||
dependency: 'tailwindcss',
|
||||
eslintPlugin: 'eslint-plugin-tailwindcss',
|
||||
middleware: tailwind,
|
||||
middleware: 'tailwind',
|
||||
},
|
||||
{
|
||||
dependency: 'storybook',
|
||||
eslintPlugin: 'eslint-plugin-storybook',
|
||||
middleware: storybook,
|
||||
middleware: 'storybook',
|
||||
},
|
||||
{
|
||||
dependency: '@tanstack/react-query',
|
||||
eslintPlugin: '@tanstack/eslint-plugin-query',
|
||||
middleware: reactQuery,
|
||||
middleware: 'reactQuery',
|
||||
},
|
||||
{
|
||||
dependency: '@testing-library/react',
|
||||
eslintPlugin: 'eslint-plugin-testing-library',
|
||||
middleware: testingLibrary,
|
||||
middleware: 'testingLibrary',
|
||||
},
|
||||
];
|
||||
|
||||
@ -64,7 +73,7 @@ export function* checkEnv(): Generator<Middleware> {
|
||||
|
||||
for (const { dependency, eslintPlugin, middleware } of envs) {
|
||||
if (deps.has(dependency) && (!eslintPlugin || deps.has(eslintPlugin))) {
|
||||
yield middleware;
|
||||
yield middlewares[middleware];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ interface MiddlewareFunctions {
|
||||
*/
|
||||
export function extendConfig(
|
||||
of: InputConfig & {
|
||||
middlewares: Middleware[];
|
||||
middlewares?: Middleware[];
|
||||
} = {
|
||||
middlewares: [],
|
||||
},
|
||||
|
@ -9,11 +9,7 @@ const packages = uniq(
|
||||
.map(_ => _.eslintPlugin!),
|
||||
);
|
||||
|
||||
console.log('Installing missing ESLint plugins:');
|
||||
for (const pkg of packages) {
|
||||
console.log(`- ${pkg}`);
|
||||
}
|
||||
console.log();
|
||||
console.log('Installing missing ESLint plugins.\n');
|
||||
|
||||
void installPackage(packages, {
|
||||
silent: false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user