121 lines
3.2 KiB
JavaScript
121 lines
3.2 KiB
JavaScript
import babel from 'rollup-plugin-babel';
|
|
import builtins from 'rollup-plugin-node-builtins';
|
|
import commonjs from 'rollup-plugin-commonjs';
|
|
import copy from 'rollup-plugin-copy';
|
|
import globals from 'rollup-plugin-node-globals';
|
|
import json from 'rollup-plugin-json';
|
|
import nodeResolve from 'rollup-plugin-node-resolve';
|
|
import replace from 'rollup-plugin-replace';
|
|
import {terser} from 'rollup-plugin-terser';
|
|
|
|
const env = process.env.NODE_ENV;
|
|
|
|
function generateConfig(configType) {
|
|
const config = {
|
|
input: 'src/index.js',
|
|
plugins: [
|
|
json(),
|
|
babel({
|
|
exclude: '**/node_modules/**',
|
|
runtimeHelpers: true,
|
|
}),
|
|
replace({
|
|
'process.env.NODE_ENV': JSON.stringify(env),
|
|
}),
|
|
commonjs(),
|
|
copy({
|
|
targets: [{src: 'module.d.ts', dest: 'lib', rename: 'index.d.ts'}],
|
|
}),
|
|
],
|
|
};
|
|
|
|
switch (configType) {
|
|
case 'browser':
|
|
config.output = [
|
|
{
|
|
file: 'lib/index.iife.js',
|
|
format: 'iife',
|
|
name: 'solanaWeb3',
|
|
sourcemap: true,
|
|
},
|
|
];
|
|
config.plugins.push(builtins());
|
|
config.plugins.push(globals());
|
|
config.plugins.push(
|
|
nodeResolve({
|
|
browser: true,
|
|
}),
|
|
);
|
|
|
|
if (env === 'production') {
|
|
config.plugins.push(
|
|
terser({
|
|
mangle: false,
|
|
compress: false,
|
|
}),
|
|
);
|
|
}
|
|
|
|
break;
|
|
case 'node':
|
|
config.output = [
|
|
{
|
|
file: 'lib/index.cjs.js',
|
|
format: 'cjs',
|
|
sourcemap: true,
|
|
},
|
|
{
|
|
file: 'lib/index.esm.js',
|
|
format: 'es',
|
|
sourcemap: true,
|
|
},
|
|
];
|
|
|
|
// Quash 'Unresolved dependencies' complaints for modules listed in the
|
|
// package.json "dependencies" section. Unfortunately this list is manually
|
|
// maintained.
|
|
config.external = [
|
|
'assert',
|
|
'@babel/runtime/core-js/get-iterator',
|
|
'@babel/runtime/core-js/json/stringify',
|
|
'@babel/runtime/core-js/object/assign',
|
|
'@babel/runtime/core-js/object/get-prototype-of',
|
|
'@babel/runtime/core-js/object/keys',
|
|
'@babel/runtime/core-js/promise',
|
|
'@babel/runtime/helpers/asyncToGenerator',
|
|
'@babel/runtime/helpers/classCallCheck',
|
|
'@babel/runtime/helpers/createClass',
|
|
'@babel/runtime/helpers/defineProperty',
|
|
'@babel/runtime/helpers/get',
|
|
'@babel/runtime/helpers/getPrototypeOf',
|
|
'@babel/runtime/helpers/inherits',
|
|
'@babel/runtime/helpers/possibleConstructorReturn',
|
|
'@babel/runtime/helpers/slicedToArray',
|
|
'@babel/runtime/helpers/toConsumableArray',
|
|
'@babel/runtime/helpers/typeof',
|
|
'@babel/runtime/regenerator',
|
|
'bn.js',
|
|
'bs58',
|
|
'buffer-layout',
|
|
'crypto-hash',
|
|
'http',
|
|
'https',
|
|
'jayson/lib/client/browser',
|
|
'node-fetch',
|
|
'rpc-websockets',
|
|
'superstruct',
|
|
'tweetnacl',
|
|
'url',
|
|
'secp256k1',
|
|
'keccak',
|
|
];
|
|
break;
|
|
default:
|
|
throw new Error(`Unknown configType: ${configType}`);
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
export default [generateConfig('node'), generateConfig('browser')];
|