Bachelorarbeit/packages/model-viewer/rollup.config.js

121 lines
3.5 KiB
JavaScript

/*
* Copyright 2019 Google LLC. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import commonjs from '@rollup/plugin-commonjs';
import {nodeResolve as resolve} from '@rollup/plugin-node-resolve';
import replace from '@rollup/plugin-replace';
import swc from '@rollup/plugin-swc';
import terser from '@rollup/plugin-terser';
import cleanup from 'rollup-plugin-cleanup';
import dts from 'rollup-plugin-dts';
const {NODE_ENV} = process.env;
const onwarn = (warning, warn) => {
// Suppress non-actionable warning caused by TypeScript boilerplate:
if (warning.code !== 'THIS_IS_UNDEFINED') {
warn(warning);
}
};
let commonPlugins = [
resolve({dedupe: 'three'}),
replace({'Reflect.decorate': 'undefined', preventAssignment: true})
];
const watchFiles = ['lib/**'];
const createModelViewerOutput =
(file, format, plugins = commonPlugins, external = []) => {
const globals = external.reduce((acc, mod) => {
acc[mod] =
mod; // Assuming global variable names are the same as module names
return acc;
}, {});
return {
input: './lib/model-viewer.js',
output: {
file,
format,
sourcemap: true,
name: 'ModelViewerElement',
globals
},
external,
watch: {include: watchFiles},
plugins,
onwarn
};
};
const outputOptions = [
createModelViewerOutput('./dist/model-viewer.js', 'esm'),
createModelViewerOutput(
'./dist/model-viewer-module.js', 'esm', commonPlugins, ['three'])
];
if (NODE_ENV !== 'development') {
const pluginsIE11 = [
...commonPlugins,
commonjs(),
swc(),
cleanup({
// Ideally we'd also clean third_party/three, which saves
// ~45kb in filesize alone... but takes 2 minutes to build
include: ['lib/**'],
comments: 'none',
}),
];
// IE11 does not support modules, so they are removed here, as well as in a
// dedicated unit test build which is needed for the same reason.
outputOptions.push(
createModelViewerOutput('./dist/model-viewer-umd.js', 'umd', pluginsIE11),
/** Bundled w/o three */
createModelViewerOutput(
'./dist/model-viewer-module-umd.js', 'umd', pluginsIE11, ['three']));
// Minified Versions
const minifiedPlugins = [...commonPlugins, terser()];
outputOptions.push(
createModelViewerOutput(
'./dist/model-viewer.min.js', 'esm', minifiedPlugins),
createModelViewerOutput(
'./dist/model-viewer-umd.min.js', 'umd', minifiedPlugins),
createModelViewerOutput(
'./dist/model-viewer-module.min.js',
'esm',
minifiedPlugins,
['three']),
createModelViewerOutput(
'./dist/model-viewer-module-umd.min.js', 'umd', minifiedPlugins, [
'three'
]));
outputOptions.push({
input: './lib/model-viewer.d.ts',
output: {
file: './dist/model-viewer.d.ts',
format: 'esm',
name: 'ModelViewerElement',
},
plugins: [dts()],
});
}
export default outputOptions;