import json from '@rollup/plugin-json' import resolve from '@rollup/plugin-node-resolve' import commonjs from '@rollup/plugin-commonjs' import typescript from '@rollup/plugin-typescript' var path = require('path') var pkg = require('./package.json') // When building UMD or ES6 module, mark dependencies as external export const moduleExternals = Object.keys(pkg.dependencies) export const moduleGlobals = {three: 'three'} export const umdGlobals = { 'chroma-js': 'chroma', 'signals': 'signalsWrapper', 'sprintf-js': 'sprintfJs', three: 'three' } function glsl () { return { name: 'glsl', transform: function (code, id) { if (!/\.(glsl|frag|vert)$/.test(id)) return var src, key if (path.basename(path.dirname(id)) === 'shader') { src = '../globals.js' key = 'shader/' + path.basename(id) } else { src = '../../globals.js' key = 'shader/chunk/' + path.basename(id) } var registryImport = 'import { ShaderRegistry } from "' + src + '";' var shader = JSON.stringify( code .replace(/[ \t]*\/\/.*\n/g, '') .replace(/[ \t]*\/\*[\s\S]*?\*\//g, '') .replace(/\n{2,}/g, '\n') .replace(/\t/g, ' ') .replace(/ {2,}/g, ' ') .replace(/ *\n */g, '\n') ) var register = "ShaderRegistry.add('" + key + "', " + shader + ');' code = registryImport + register return { code: code, map: { mappings: '' } } } } } function text () { return { name: 'text', transform: function (code, id) { if (!/\.(txt)$/.test(id)) return code = 'export default ' + JSON.stringify(code) + ';' return { code: code, map: { mappings: '' } } } } } export const plugins = [ typescript({sourceMap: true, inlineSources: true}), resolve({ jsnext: true, main: true, }), commonjs(), glsl(), text(), json(), ] const moduleConfig = { input: 'src/ngl.ts', plugins, output: [ { file: 'build/js/ngl.umd.js', format: 'umd', name: 'NGL', sourcemap: true, globals: umdGlobals }, { file: 'build/js/ngl.esm.js', format: 'es', name: 'NGL', sourcemap: true, globals: moduleGlobals } ], external: moduleExternals } // this version has three.js and everything else built in const bundleConfig = { input: 'src/ngl.ts', plugins: [...plugins], output: { file: 'build/js/ngl.dev.js', format: 'umd', name: 'NGL', sourcemap: true, globals: {} }, external: [] } export default [ moduleConfig, bundleConfig ]