121 lines
3.5 KiB
JavaScript
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;
|