eslint-rules/esbuild.ts
2023-07-19 23:40:39 -04:00

53 lines
1.4 KiB
JavaScript
Executable File

#!/usr/bin/env -S node -r esbin
import esbuild from 'esbuild';
import { resolve } from 'path';
import { babelPlugin } from './src/babel';
const args = process.argv.slice(2);
const ENV = process.env.NODE_ENV || 'development';
const PROD = ENV === 'production';
async function main(entry: string, outfile: string) {
const context = await esbuild.context({
entryPoints: [entry],
outfile,
bundle: true,
minify: PROD,
platform: 'node',
packages: 'external',
sourcemap: 'linked',
plugins: [
babelPlugin,
{
name: 'alias',
setup(build) {
build.onResolve({ filter: /^jsx-ast-utils$/ }, () => ({
path: resolve('./jsx-ast-utils/src/index.js'),
}));
build.onResolve({ filter: /^jsx-ast-utils\/.+$/ }, ({ path }) => ({
path:
resolve('./jsx-ast-utils/', path.slice('jsx-ast-utils/'.length)) + '.js',
}));
},
},
],
define: {},
banner: {
js: '/* eslint-disable */',
},
});
await context.rebuild();
if (args.includes('-w') || args.includes('--watch')) {
await context.watch();
} else {
await context.dispose();
}
}
main('./eslint-plugin-react/index.js', './dist/react/index.js');
main('./eslint-plugin-import/src/index.js', './dist/import/index.js');
main('./eslint-plugin-jsx-a11y/src/index.js', './dist/jsx-a11y/index.js');
main('./src/ensureRedirect.ts', './dist/ensureRedirect.js');