53 lines
1.4 KiB
JavaScript
Executable File
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');
|