packages/ketcher-standalone/rollup.config.js (190 lines of code) (raw):

import babel from '@rollup/plugin-babel'; import cleanup from 'rollup-plugin-cleanup'; import commonjs from '@rollup/plugin-commonjs'; import del from 'rollup-plugin-delete'; import nodePolyfills from 'rollup-plugin-node-polyfills'; import pkg from './package.json'; import resolve from '@rollup/plugin-node-resolve'; import strip from '@rollup/plugin-strip'; import typescript from 'rollup-plugin-typescript2'; import webWorkerLoader from 'rollup-plugin-web-worker-loader'; import copy from 'rollup-plugin-copy'; import alias from '@rollup/plugin-alias'; import { license } from '../../license.ts'; import replace from '@rollup/plugin-replace'; const mode = { PRODUCTION: 'production', DEVELOPMENT: 'development', }; const extensions = ['.js', '.ts']; const isProduction = process.env.NODE_ENV === mode.PRODUCTION; const includePattern = 'src/**/*'; const baseConfig = { input: pkg.source, external: ['ketcher-core', /@babel\/runtime/], plugins: [ nodePolyfills(), resolve({ extensions }), commonjs(), webWorkerLoader({ extensions, sourcemap: false, targetPlatform: 'browser', external: ['@babel/runtime'], }), typescript(), babel({ extensions, babelHelpers: 'runtime', include: includePattern, }), cleanup({ extensions: extensions.map((ext) => ext.trimStart('.')), include: includePattern, comments: 'none', }), replace({ 'process.env.SEPARATE_INDIGO_RENDER': process.env.SEPARATE_INDIGO_RENDER, }), ...(isProduction ? [strip({ include: includePattern })] : []), ], }; const configWithWasmBase64 = { ...baseConfig, output: [ { file: pkg.exports['.'].require, exports: 'named', format: 'cjs', banner: license, }, { file: pkg.exports['.'].import, exports: 'named', format: 'es', banner: license, }, ], plugins: [ del({ targets: 'dist/*', runOnce: true, }), ...baseConfig.plugins, alias({ entries: [ { find: '_indigo-ketcher-import-alias_', replacement: 'indigo-ketcher', }, ], }), ], }; const configWithWasmFetch = { ...baseConfig, output: [ { file: pkg.exports['./dist/binaryWasm'].require, exports: 'named', format: 'cjs', banner: license, }, { file: pkg.exports['./dist/binaryWasm'].import, exports: 'named', format: 'es', banner: license, }, ], plugins: [ ...baseConfig.plugins, alias({ entries: [ { find: '_indigo-ketcher-import-alias_', replacement: 'indigo-ketcher/binaryWasm', }, ], }), copy({ targets: [ { src: '../../node_modules/indigo-ketcher/*.wasm', dest: 'dist/binaryWasm', }, ], }), ], }; const configBase64WithoutRender = { ...baseConfig, output: [ { file: pkg.exports['./dist/jsNoRender'].require, exports: 'named', format: 'cjs', banner: license, }, { file: pkg.exports['./dist/jsNoRender'].import, exports: 'named', format: 'es', banner: license, }, ], plugins: [ ...baseConfig.plugins, alias({ entries: [ { find: '_indigo-ketcher-import-alias_', replacement: 'indigo-ketcher/jsNoRender', }, ], }), ], }; const configWithWasmWithoutRender = { ...baseConfig, output: [ { file: pkg.exports['./dist/binaryWasmNoRender'].require, exports: 'named', format: 'cjs', banner: license, }, { file: pkg.exports['./dist/binaryWasmNoRender'].import, exports: 'named', format: 'es', banner: license, }, ], plugins: [ ...baseConfig.plugins, alias({ entries: [ { find: '_indigo-ketcher-import-alias_', replacement: 'indigo-ketcher/binaryWasmNoRender', }, ], }), copy({ targets: [ { src: '../../node_modules/indigo-ketcher/*.wasm', dest: 'dist/binaryWasmNoRender', }, ], }), ], }; const modulesMap = { base64: configWithWasmBase64, wasm: configWithWasmFetch, base64WithoutRender: configBase64WithoutRender, wasmWithoutRender: configWithWasmWithoutRender, }; export default modulesMap[process.env.INDIGO_MODULE_NAME] || modulesMap.base64;