adminjs
Version:
Admin panel for apps written in node.js
65 lines (59 loc) • 1.99 kB
text/typescript
import { InputOptions, OutputOptions } from 'rollup'
import { nodeResolve as resolve } from '@rollup/plugin-node-resolve'
import * as commonjs from '@rollup/plugin-commonjs'
import * as replace from '@rollup/plugin-replace'
import * as json from '@rollup/plugin-json'
import { minify } from 'rollup-plugin-esbuild-minify'
import { babel } from '@rollup/plugin-babel'
import presetEnv from '@babel/preset-env'
import presetReact from '@babel/preset-react'
import presetTs from '@babel/preset-typescript'
import { AssetBundler } from './utils/asset-bundler.js'
import { COMPONENTS_ENTRY_PATH, COMPONENTS_OUTPUT_PATH, NODE_ENV } from './utils/constants.js'
const input: InputOptions = {
input: COMPONENTS_ENTRY_PATH,
external: AssetBundler.DEFAULT_EXTERNALS,
plugins: [
resolve({
extensions: AssetBundler.DEFAULT_EXTENSIONS,
mainFields: ['browser', 'main', 'module', 'jsnext:main'],
preferBuiltins: false,
}),
(json as any).default(),
(replace as any).default({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
'process.env.IS_BROWSER': 'true',
'process.env.': 'AdminJS.env.',
preventAssignment: true,
'process.browser': true,
}),
(commonjs as any).default(),
babel({
extensions: AssetBundler.DEFAULT_EXTENSIONS,
babelrc: false,
babelHelpers: 'bundled',
exclude: 'node_modules/**/*.js',
presets: [
[presetEnv, {
targets: {
node: '18',
},
loose: true,
modules: false,
}],
presetReact,
presetTs,
],
plugins: ['@babel/plugin-syntax-import-assertions'],
}),
...(NODE_ENV === 'production' ? [minify()] : []),
],
}
const output: OutputOptions = {
name: 'AdminJSCustom',
file: COMPONENTS_OUTPUT_PATH,
inlineDynamicImports: true,
globals: AssetBundler.DEFAULT_GLOBALS,
}
const bundler = new AssetBundler(input, output)
export default bundler