Inline eslint-import-resolver-typescript
This commit is contained in:
parent
5e15b8c9dc
commit
df60550598
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,8 +1,5 @@
|
|||||||
eslint-plugin-import
|
/packages/*
|
||||||
eslint-plugin-jsx-a11y
|
!/packages/eslint-plugin-react-hooks
|
||||||
eslint-plugin-react
|
|
||||||
eslint-plugin-n
|
|
||||||
jsx-ast-utils
|
|
||||||
/react
|
/react
|
||||||
|
|
||||||
dist/**/*.js
|
dist/**/*.js
|
||||||
|
8
build.sh
8
build.sh
@ -1,13 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
./src/build-local-rules.ts
|
./src/build-local-rules.ts
|
||||||
./esbuild.ts
|
|
||||||
npx tsc ./src/local/index.ts --outdir ./dist/local --target ESNext --module CommonJS --esModuleInterop >/dev/null
|
npx tsc ./src/local/index.ts --outdir ./dist/local --target ESNext --module CommonJS --esModuleInterop >/dev/null
|
||||||
npx tsc ./src/index.ts --outdir ./dist --declaration --target ESNext --module CommonJS --esModuleInterop >/dev/null
|
npx tsc ./src/index.ts --outdir ./dist --declaration --target ESNext --module CommonJS --esModuleInterop >/dev/null
|
||||||
|
rm -r dist/redirect.*
|
||||||
|
./esbuild.ts
|
||||||
|
sed -i '' '/import.*redirect.*;/d' dist/index.d.ts
|
||||||
|
|
||||||
type() {
|
type() {
|
||||||
npx dts-bundle-generator "./eslint-plugin-$1/$2" \
|
npx dts-bundle-generator "./packages/eslint-plugin-$1/$2" \
|
||||||
-o "./dist/$1/index.d.ts" \
|
-o "./dist/$1/index.d.ts" \
|
||||||
--project "./eslint-plugin-$1/tsconfig.json" \
|
--project "./packages/eslint-plugin-$1/tsconfig.json" \
|
||||||
--no-check
|
--no-check
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -4,4 +4,4 @@ declare module 'eslint-define-config/src/rules/react/no-unknown-property.d.ts' {
|
|||||||
extends: ('next' | 'emotion')[];
|
extends: ('next' | 'emotion')[];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export declare function extendConfig({ plugins, settings, rules, extends: _extends, overrides, ...rest }: ESLintConfig): ESLintConfig;
|
export declare function extendConfig({ plugins, settings, rules, extends: _extends, overrides, ...rest }?: ESLintConfig): ESLintConfig;
|
||||||
|
5
dist/package.json
vendored
5
dist/package.json
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@aet/eslint-rules",
|
"name": "@aet/eslint-rules",
|
||||||
"version": "0.0.1-beta.33",
|
"version": "0.0.1-beta.35",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"esbin": "^0.0.2",
|
"esbin": "^0.0.2",
|
||||||
@ -17,12 +17,13 @@
|
|||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"doctrine": "^3.0.0",
|
"doctrine": "^3.0.0",
|
||||||
"emoji-regex": "^10.2.1",
|
"emoji-regex": "^10.2.1",
|
||||||
|
"enhanced-resolve": "^5.15.0",
|
||||||
"eslint-config-prettier": "9.0.0",
|
"eslint-config-prettier": "9.0.0",
|
||||||
"eslint-define-config": "^1.23.0",
|
"eslint-define-config": "^1.23.0",
|
||||||
"eslint-import-resolver-node": "^0.3.9",
|
"eslint-import-resolver-node": "^0.3.9",
|
||||||
"eslint-import-resolver-typescript": "^3.6.0",
|
|
||||||
"eslint-module-utils": "^2.8.0",
|
"eslint-module-utils": "^2.8.0",
|
||||||
"estraverse": "^5.3.0",
|
"estraverse": "^5.3.0",
|
||||||
|
"get-tsconfig": "^4.7.0",
|
||||||
"is-core-module": "^2.13.0",
|
"is-core-module": "^2.13.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
"language-tags": "^1.0.9",
|
"language-tags": "^1.0.9",
|
||||||
|
30
esbuild.ts
30
esbuild.ts
@ -152,8 +152,8 @@ export const babelPlugin: Plugin = {
|
|||||||
.replaceAll("require('object.fromentries/polyfill')()", 'Object.fromEntries');
|
.replaceAll("require('object.fromentries/polyfill')()", 'Object.fromEntries');
|
||||||
|
|
||||||
if (
|
if (
|
||||||
path.includes('eslint-plugin-import/src/rules/') ||
|
path.includes('packages/eslint-plugin-import/src/rules/') ||
|
||||||
path.includes('eslint-plugin-import/config/')
|
path.includes('packages/eslint-plugin-import/config/')
|
||||||
) {
|
) {
|
||||||
source = source.replace('\nmodule.exports = {', '\nexport default {');
|
source = source.replace('\nmodule.exports = {', '\nexport default {');
|
||||||
}
|
}
|
||||||
@ -202,10 +202,12 @@ const plugins: Plugin[] = [
|
|||||||
name: 'alias',
|
name: 'alias',
|
||||||
setup(build) {
|
setup(build) {
|
||||||
build.onResolve({ filter: /^jsx-ast-utils$/ }, () => ({
|
build.onResolve({ filter: /^jsx-ast-utils$/ }, () => ({
|
||||||
path: resolve('./jsx-ast-utils/src/index.js'),
|
path: resolve('./packages/jsx-ast-utils/src/index.js'),
|
||||||
}));
|
}));
|
||||||
build.onResolve({ filter: /^jsx-ast-utils\/.+$/ }, ({ path }) => ({
|
build.onResolve({ filter: /^jsx-ast-utils\/.+$/ }, ({ path }) => ({
|
||||||
path: resolve('./jsx-ast-utils/', path.slice('jsx-ast-utils/'.length)) + '.js',
|
path:
|
||||||
|
resolve('./packages/jsx-ast-utils/', path.slice('jsx-ast-utils/'.length)) +
|
||||||
|
'.js',
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -234,7 +236,13 @@ if (process.env.DEBUG) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function main(entry: string, outfile: string) {
|
async function main(
|
||||||
|
entry: string,
|
||||||
|
outfile = entry
|
||||||
|
.replace('./packages/', './dist/')
|
||||||
|
.replace('src/', '')
|
||||||
|
.replace('.ts', '.js'),
|
||||||
|
) {
|
||||||
await esbuild.build({
|
await esbuild.build({
|
||||||
entryPoints: [entry],
|
entryPoints: [entry],
|
||||||
outfile,
|
outfile,
|
||||||
@ -251,9 +259,11 @@ async function main(entry: string, outfile: string) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
main('./eslint-plugin-react/index.js', './dist/react/index.js');
|
main('./packages/eslint-plugin-react/index.js');
|
||||||
main('./eslint-plugin-import/src/index.js', './dist/import/index.js');
|
main('./packages/eslint-plugin-import/src/index.js');
|
||||||
main('./eslint-plugin-jsx-a11y/src/index.js', './dist/jsx-a11y/index.js');
|
main('./packages/eslint-plugin-jsx-a11y/src/index.js');
|
||||||
main('./eslint-plugin-react-hooks/index.ts', './dist/react-hooks/index.js');
|
main('./packages/eslint-plugin-react-hooks/index.ts');
|
||||||
main('./eslint-plugin-n/lib/index.js', './dist/n/index.js');
|
main('./packages/eslint-plugin-n/lib/index.js');
|
||||||
|
main('./packages/eslint-import-resolver-typescript/src/index.ts');
|
||||||
main('./src/rules/index.ts', './dist/rules/index.js');
|
main('./src/rules/index.ts', './dist/rules/index.js');
|
||||||
|
main('./src/index.ts', './dist/index.js');
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.22.10",
|
"@babel/core": "^7.22.11",
|
||||||
"@babel/plugin-transform-flow-strip-types": "^7.22.5",
|
"@babel/plugin-transform-flow-strip-types": "^7.22.5",
|
||||||
"@babel/preset-env": "^7.22.10",
|
"@babel/preset-env": "^7.22.10",
|
||||||
"@types/babel-plugin-macros": "^3.1.0",
|
"@types/babel-plugin-macros": "^3.1.0",
|
||||||
@ -15,7 +15,7 @@
|
|||||||
"@types/estree": "^1.0.1",
|
"@types/estree": "^1.0.1",
|
||||||
"@types/estree-jsx": "^1.0.0",
|
"@types/estree-jsx": "^1.0.0",
|
||||||
"@types/lodash": "^4.14.197",
|
"@types/lodash": "^4.14.197",
|
||||||
"@types/node": "^20.5.4",
|
"@types/node": "^20.5.7",
|
||||||
"@typescript-eslint/types": "^6.4.1",
|
"@typescript-eslint/types": "^6.4.1",
|
||||||
"babel-plugin-macros": "^3.1.0",
|
"babel-plugin-macros": "^3.1.0",
|
||||||
"dts-bundle-generator": "^8.0.1",
|
"dts-bundle-generator": "^8.0.1",
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"esbuild": "0.19.2",
|
"esbuild": "0.19.2",
|
||||||
"esbuild-plugin-alias": "^0.2.1",
|
"esbuild-plugin-alias": "^0.2.1",
|
||||||
"esbuild-register": "3.4.2",
|
"esbuild-register": "3.4.2",
|
||||||
"eslint": "8.47.0",
|
"eslint": "8.48.0",
|
||||||
"eslint-config-prettier": "9.0.0",
|
"eslint-config-prettier": "9.0.0",
|
||||||
"eslint-define-config": "^1.23.0",
|
"eslint-define-config": "^1.23.0",
|
||||||
"eslint-plugin-import": "^2.28.1",
|
"eslint-plugin-import": "^2.28.1",
|
||||||
@ -34,7 +34,7 @@
|
|||||||
"minimatch": "^9.0.3",
|
"minimatch": "^9.0.3",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"prettier": "^3.0.2",
|
"prettier": "^3.0.2",
|
||||||
"typescript": "5.1.6"
|
"typescript": "5.2.2"
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"arrowParens": "avoid",
|
"arrowParens": "avoid",
|
||||||
|
14
patch/eslint-import-resolver-typescript.patch
Normal file
14
patch/eslint-import-resolver-typescript.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
diff --git a/package.json b/package.json
|
||||||
|
index a905ca5..4979e41 100644
|
||||||
|
--- a/package.json
|
||||||
|
+++ b/package.json
|
||||||
|
@@ -62,8 +62,7 @@
|
||||||
|
"typecov": "type-coverage"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
- "eslint": "*",
|
||||||
|
- "eslint-plugin-import": "*"
|
||||||
|
+ "eslint": "*"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.3.4",
|
7
pull.sh
7
pull.sh
@ -1,11 +1,12 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
pull() {
|
pull() {
|
||||||
echo "🚛 Pulling $1"
|
echo "🚛 Pulling $1"
|
||||||
(cd "$1" && git pull)
|
(cd "packages/$1" && git pull)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pull eslint-import-resolver-typescript
|
||||||
pull eslint-plugin-import
|
pull eslint-plugin-import
|
||||||
pull eslint-plugin-jsx-a11y
|
pull eslint-plugin-jsx-a11y
|
||||||
pull jsx-ast-utils
|
|
||||||
pull eslint-plugin-react
|
|
||||||
pull eslint-plugin-n
|
pull eslint-plugin-n
|
||||||
|
pull eslint-plugin-react
|
||||||
|
pull jsx-ast-utils
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
sync() (
|
sync() (
|
||||||
cd "$1" && git diff > "../patch/$1.patch"
|
cd "packages/$1" && git diff > "../../patch/$1.patch"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sync eslint-import-resolver-typescript
|
||||||
sync eslint-plugin-import
|
sync eslint-plugin-import
|
||||||
sync eslint-plugin-jsx-a11y
|
sync eslint-plugin-jsx-a11y
|
||||||
sync eslint-plugin-react
|
|
||||||
sync eslint-plugin-n
|
sync eslint-plugin-n
|
||||||
|
sync eslint-plugin-react
|
||||||
sync jsx-ast-utils
|
sync jsx-ast-utils
|
||||||
|
20
src/index.ts
20
src/index.ts
@ -1,5 +1,5 @@
|
|||||||
import Module from 'module';
|
|
||||||
import type { ESLintConfig } from 'eslint-define-config';
|
import type { ESLintConfig } from 'eslint-define-config';
|
||||||
|
import './redirect';
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
const { name } = (0, require)('./package.json');
|
const { name } = (0, require)('./package.json');
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ export function extendConfig({
|
|||||||
extends: _extends,
|
extends: _extends,
|
||||||
overrides,
|
overrides,
|
||||||
...rest
|
...rest
|
||||||
}: ESLintConfig): ESLintConfig {
|
}: ESLintConfig = {}): ESLintConfig {
|
||||||
const hasReact = plugins?.includes('react');
|
const hasReact = plugins?.includes('react');
|
||||||
const hasUnicorn = plugins?.includes('unicorn');
|
const hasUnicorn = plugins?.includes('unicorn');
|
||||||
const hasReactRefresh = plugins?.includes('react-refresh');
|
const hasReactRefresh = plugins?.includes('react-refresh');
|
||||||
@ -200,19 +200,3 @@ export function extendConfig({
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
const _resolveFilename = (Module as any)._resolveFilename;
|
|
||||||
(Module as any)._resolveFilename = function (module: string, ...args: any[]) {
|
|
||||||
switch (module) {
|
|
||||||
case 'eslint-plugin-import':
|
|
||||||
case 'eslint-plugin-jsx-a11y':
|
|
||||||
case 'eslint-plugin-local':
|
|
||||||
case 'eslint-plugin-react':
|
|
||||||
case 'eslint-plugin-react-hooks':
|
|
||||||
case 'eslint-plugin-rules':
|
|
||||||
case 'eslint-plugin-n':
|
|
||||||
module = `${name}/${module.slice(14)}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _resolveFilename(module, ...args);
|
|
||||||
};
|
|
||||||
|
22
src/redirect.ts
Normal file
22
src/redirect.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import Module from 'module';
|
||||||
|
// @ts-expect-error
|
||||||
|
const { name } = (0, require)('./package.json');
|
||||||
|
|
||||||
|
const _resolveFilename = (Module as any)._resolveFilename;
|
||||||
|
const alias = new Set([
|
||||||
|
'eslint-import-resolver-typescript',
|
||||||
|
'eslint-plugin-import',
|
||||||
|
'eslint-plugin-jsx-a11y',
|
||||||
|
'eslint-plugin-local',
|
||||||
|
'eslint-plugin-n',
|
||||||
|
'eslint-plugin-react-hooks',
|
||||||
|
'eslint-plugin-react',
|
||||||
|
'eslint-plugin-rules',
|
||||||
|
]);
|
||||||
|
|
||||||
|
(Module as any)._resolveFilename = function (module: string, ...args: any[]) {
|
||||||
|
if (alias.has(module)) {
|
||||||
|
module = `${name}/${module}`;
|
||||||
|
}
|
||||||
|
return _resolveFilename(module, ...args);
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user