bigint-mod-arith/build/rollup.config.js

178 lines
4.5 KiB
JavaScript
Raw Normal View History

2020-04-06 22:49:13 +00:00
'use strict'
import { nodeResolve as resolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import { terser } from 'rollup-plugin-terser'
import typescriptPlugin from '@rollup/plugin-typescript'
import commonjs from '@rollup/plugin-commonjs'
import json from '@rollup/plugin-json'
2020-04-06 22:49:13 +00:00
import { join } from 'path'
2022-10-03 15:35:35 +00:00
import { existsSync } from 'fs'
import { directories, name as _name, exports } from '../package.json'
import { compile } from './rollup-plugin-dts.js'
2020-04-06 22:49:13 +00:00
const rootDir = join(__dirname, '..')
const dstDir = join(rootDir, directories.dist)
const srcDir = join(rootDir, 'src', 'ts')
2020-04-06 22:49:13 +00:00
function camelise (str) {
return str.replace(/-([a-z])/g,
function (m, w) {
return w.toUpperCase()
})
}
const regex = /^(?:(?<scope>@.*?)\/)?(?<name>.*)/ // We are going to take only the package name part if there is a scope, e.g. @my-org/package-name
const { name } = _name.match(regex).groups
const pkgCamelisedName = camelise(name)
2020-04-06 22:49:13 +00:00
const input = join(srcDir, 'index.ts')
if (existsSync(input) !== true) throw new Error('The entry point should be index.ts')
const tsBundleOptions = {
tsconfig: join(rootDir, 'tsconfig.json'),
outDir: undefined, // ignore outDir in tsconfig.json
include: ['src/ts/**/*', 'build/typings/is-browser.d.ts'],
exclude: ['src/**/*.spec.ts']
}
const sourcemapOutputOptions = {
sourcemap: 'inline',
sourcemapExcludeSources: true
}
2020-04-06 22:49:13 +00:00
function compileDts () {
return {
name: 'compile-dts',
closeBundle () {
compile()
}
}
}
export default [
2022-10-03 15:35:35 +00:00
{ // Node ESM with declarations
2020-04-06 22:49:13 +00:00
input: input,
output: [
{
2022-10-03 15:35:35 +00:00
file: join(rootDir, exports['.'].node.import),
...sourcemapOutputOptions,
2020-04-08 09:53:15 +00:00
format: 'es'
2020-04-06 22:49:13 +00:00
}
],
plugins: [
replace({
2022-10-03 15:35:35 +00:00
IS_BROWSER: false,
preventAssignment: true
}),
typescriptPlugin(tsBundleOptions),
compileDts(),
2022-10-03 15:35:35 +00:00
// resolve({
// browser: false,
// exportConditions: ['node']
// }),
commonjs({ extensions: ['.js', '.cjs', '.ts', '.jsx', '.cjsx', '.tsx'] }), // the ".ts" extension is required
json()
2022-10-03 15:35:35 +00:00
]
},
{ // Node CJS
input: input,
output: [
{
file: join(rootDir, exports['.'].node.require),
...sourcemapOutputOptions,
format: 'cjs',
exports: 'auto'
}
],
2022-10-03 15:35:35 +00:00
plugins: [
// replace({
// 'await import(': 'require(',
// delimiters: ['', ''],
// preventAssignment: true
// }),
replace({
IS_BROWSER: false,
preventAssignment: true
}),
typescriptPlugin(tsBundleOptions),
// resolve({
// browser: false,
// exportConditions: ['node']
// }),
commonjs({ extensions: ['.js', '.cjs', '.ts', '.jsx', '.cjsx', '.tsx'] }), // the ".ts" extension is required
json()
]
2020-04-06 22:49:13 +00:00
},
2022-10-03 15:35:35 +00:00
{ // ESM for browsers
2020-04-06 22:49:13 +00:00
input: input,
output: [
{
2022-10-03 15:35:35 +00:00
file: join(rootDir, exports['.'].default),
...sourcemapOutputOptions,
format: 'es'
2020-04-06 22:49:13 +00:00
},
{
file: join(dstDir, 'bundles/esm.js'),
...sourcemapOutputOptions,
2020-04-06 22:49:13 +00:00
format: 'es'
},
{
file: join(dstDir, 'bundles/esm.min.js'),
format: 'es',
plugins: [terser()]
2020-04-06 22:49:13 +00:00
}
],
plugins: [
replace({
IS_BROWSER: true,
preventAssignment: true
2020-04-06 22:49:13 +00:00
}),
typescriptPlugin(tsBundleOptions),
2020-04-06 22:49:13 +00:00
resolve({
browser: true,
2022-10-03 15:35:35 +00:00
exportConditions: ['browser', 'default']
}),
2022-10-03 15:35:35 +00:00
commonjs({ extensions: ['.js', '.cjs', '.ts', '.jsx', '.cjsx', '.tsx'] }), // the ".ts" extension is required
json()
]
},
2022-10-03 15:35:35 +00:00
{ // Browser bundles
input: input,
output: [
{
2022-10-03 15:35:35 +00:00
file: join(dstDir, 'bundles/iife.js'),
format: 'iife',
name: pkgCamelisedName,
plugins: [terser()]
},
{
2022-10-03 15:35:35 +00:00
file: join(dstDir, 'bundles/umd.js'),
format: 'umd',
name: pkgCamelisedName,
plugins: [terser()]
}
],
2020-04-06 22:49:13 +00:00
plugins: [
2022-10-03 15:35:35 +00:00
// replace({
// 'await import(': 'require(',
// delimiters: ['', ''],
// preventAssignment: true
// }),
2020-04-06 22:49:13 +00:00
replace({
2022-10-03 15:35:35 +00:00
IS_BROWSER: true,
preventAssignment: true
}),
typescriptPlugin(tsBundleOptions),
2022-10-03 15:35:35 +00:00
resolve({
browser: true,
exportConditions: ['browser', 'default'],
mainFields: ['browser', 'module', 'main']
}),
commonjs({ extensions: ['.js', '.cjs', '.ts', '.jsx', '.cjsx', '.tsx'] }), // the ".ts" extension is required
json()
2022-10-03 15:35:35 +00:00
]
2020-04-06 22:49:13 +00:00
}
]