Mirror: React hooks for accessible, common web interactions. UI super powers without the UI.
at v0.1.5 2.6 kB view raw
1import commonjs from '@rollup/plugin-commonjs'; 2import resolve from '@rollup/plugin-node-resolve'; 3import typescript from 'rollup-plugin-typescript2'; 4import buble from '@rollup/plugin-buble'; 5import { terser } from 'rollup-plugin-terser'; 6 7const pkg = require('./package.json'); 8 9export const externalModules = ['dns', 'fs', 'path', 'url']; 10if (pkg.peerDependencies) 11 externalModules.push(...Object.keys(pkg.peerDependencies)); 12if (pkg.dependencies) externalModules.push(...Object.keys(pkg.dependencies)); 13 14const externalPredicate = new RegExp(`^(${externalModules.join('|')})($|/)`); 15 16const config = { 17 input: { 18 [pkg.name]: './src/index.ts', 19 }, 20 onwarn() {}, 21 external(id) { 22 return externalPredicate.test(id); 23 }, 24 treeshake: { 25 unknownGlobalSideEffects: false, 26 tryCatchDeoptimization: false, 27 moduleSideEffects: false, 28 }, 29}; 30 31const plugins = [ 32 resolve({ 33 extensions: ['.js', '.jsx', '.ts', '.tsx'], 34 mainFields: ['module', 'jsnext', 'main'], 35 preferBuiltins: false, 36 browser: true, 37 }), 38 39 commonjs({ 40 ignoreGlobal: true, 41 include: /\/node_modules\//, 42 namedExports: {}, 43 }), 44 45 typescript({ 46 useTsconfigDeclarationDir: true, 47 tsconfigOverride: { 48 compilerOptions: { 49 sourceMap: true, 50 noEmit: false, 51 declaration: true, 52 declarationDir: './dist/types', 53 target: 'esnext', 54 }, 55 }, 56 }), 57 58 buble({ 59 transforms: { 60 unicodeRegExp: false, 61 dangerousForOf: true, 62 dangerousTaggedTemplateString: true, 63 asyncAwait: false, 64 }, 65 objectAssign: 'Object.assign', 66 }), 67 68 terser({ 69 warnings: true, 70 ecma: 5, 71 keep_fnames: true, 72 ie8: false, 73 compress: { 74 pure_getters: true, 75 toplevel: true, 76 booleans_as_integers: false, 77 keep_fnames: true, 78 keep_fargs: true, 79 if_return: false, 80 ie8: false, 81 sequences: false, 82 loops: false, 83 conditionals: false, 84 join_vars: false 85 }, 86 mangle: { 87 module: true, 88 keep_fnames: true, 89 }, 90 output: { 91 beautify: true, 92 braces: true, 93 indent_level: 2 94 } 95 }), 96]; 97 98const output = (format = 'cjs', extension = '.js') => ({ 99 chunkFileNames: '[hash]' + extension, 100 entryFileNames: '[name]' + extension, 101 dir: './dist', 102 exports: 'named', 103 externalLiveBindings: false, 104 sourcemap: true, 105 esModule: false, 106 indent: false, 107 freeze: false, 108 strict: false, 109 format, 110}); 111 112export default [ 113 { 114 ...config, 115 shimMissingExports: true, 116 plugins, 117 output: [output('esm', '.es.js'), output('cjs', '.js')], 118 }, 119];