adminjs
Version:
Admin panel for apps written in node.js
47 lines • 1.76 kB
JavaScript
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 = {
input: COMPONENTS_ENTRY_PATH,
external: AssetBundler.DEFAULT_EXTERNALS,
plugins: [resolve({
extensions: AssetBundler.DEFAULT_EXTENSIONS,
mainFields: ['browser', 'main', 'module', 'jsnext:main'],
preferBuiltins: false
}), json.default(), replace.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.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 = {
name: 'AdminJSCustom',
file: COMPONENTS_OUTPUT_PATH,
inlineDynamicImports: true,
globals: AssetBundler.DEFAULT_GLOBALS
};
const bundler = new AssetBundler(input, output);
export default bundler;