@knapsack/app
Version:
Build Design Systems on top of knapsack, by Basalt
94 lines (88 loc) • 2.25 kB
JavaScript
import getBabelConfig from '@knapsack/babel-config/get-config';
import commonjs from '@rollup/plugin-commonjs';
// import builtins from 'rollup-plugin-node-builtins';
import json from '@rollup/plugin-json';
import babel from 'rollup-plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import replace from '@rollup/plugin-replace';
import { join } from 'path';
import { DEFAULT_EXTENSIONS } from '@babel/core';
const isProd = process.env.NODE_ENV === 'production';
const extensions = ['.ts', '.tsx', ...DEFAULT_EXTENSIONS];
const distDir = join(__dirname, './dist/client/renderer-client/');
/** @type {import('rollup').RollupOptions} */
const baseConfig = {
input: {
'renderer-client': join(
__dirname,
'./src/client/renderer-client/renderer-client-main.ts',
),
},
plugins: [
resolve({
extensions,
}),
replace({
'process.env.NODE_ENV': JSON.stringify(
isProd ? 'production' : 'development',
),
}),
commonjs({
include: /node_modules/,
}),
json(),
],
};
/** @type {import('rollup').RollupOptions} */
const modernConfig = {
...baseConfig,
output: {
format: 'esm',
dir: distDir,
entryFileNames: '[name].mjs',
chunkFileNames: '[name]-[hash].mjs',
assetFileNames: 'assets/[name]-[hash][extname]',
},
plugins: [
...baseConfig.plugins,
babel({
babelrc: false,
...getBabelConfig({
useESModules: true,
targets: {
esmodules: true,
},
}),
extensions,
exclude: /node_modules/,
runtimeHelpers: true,
}),
],
};
/** @type {import('rollup').RollupOptions} */
const legacyConfig = {
...baseConfig,
output: {
format: 'system',
dir: distDir,
entryFileNames: '[name].js',
chunkFileNames: '[name]-[hash].js',
assetFileNames: 'assets/[name]-[hash][extname]',
},
plugins: [
...baseConfig.plugins,
babel({
babelrc: false,
...getBabelConfig({
useESModules: true,
targets: {
browsers: ['last 2 versions', '> 5%', 'not ie <= 11'],
},
}),
extensions,
exclude: /node_modules/,
runtimeHelpers: true,
}),
],
};
export default [modernConfig, legacyConfig];