products/userale/rollup.config.js (103 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 json from '@rollup/plugin-json';
import nodeResolve from "@rollup/plugin-node-resolve";
import terser from "@rollup/plugin-terser";
import typescript from '@rollup/plugin-typescript';
import license from 'rollup-plugin-license'
import copy from 'rollup-plugin-copy'
import {dts} from "rollup-plugin-dts";
import {version} from './package.json';
const srcWebExtensionDir = 'src/UserALEWebExtension/'
const buildWebExtensionDir = 'build/UserALEWebExtension/'
const {babel: rollupBabel} = require('@rollup/plugin-babel');
const banner = 'Licensed to the Apache Software Foundation (ASF) under one or more\n' +
'contributor license agreements. See the NOTICE file distributed with\n' +
'this work for additional information regarding copyright ownership.\n' +
'The ASF licenses this file to You under the Apache License, Version 2.0\n' +
'(the "License"); you may not use this file except in compliance with\n' +
'the License. You may obtain a copy of the License at\n' +
'\n' +
'http://www.apache.org/licenses/LICENSE-2.0\n' +
'\n' +
'Unless required by applicable law or agreed to in writing, software\n' +
'distributed under the License is distributed on an "AS IS" BASIS,\n' +
'WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n' +
'See the License for the specific language governing permissions and\n' +
'limitations under the License.' +
'\n@preserved'
export default [
{
input: 'src/main.ts',
output: [
{
format: 'umd',
file: `build/userale-${version}.js`,
name: 'userale',
sourcemap: true,
},
{
format: 'umd',
file: `build/userale-${version}.min.js`,
name: 'userale',
plugins: [terser()]
},
],
plugins: [
license({banner, sourcemap: true}),
json(),
nodeResolve(),
commonjs({include: /node_modules/}),
typescript({
tsconfig: "./tsconfig.json",
exclude: ["./test/**/*"]
}),
rollupBabel({
babelHelpers: "runtime",
exclude: /node_modules/,
plugins: ["@babel/plugin-transform-block-scoping"]
})]
},
{
input: "src/types.d.ts",
cache: false,
output: {
format: 'es',
file: "build/userale.d.ts",
},
plugins: [
dts()
]
},
...['content', 'background', 'options'].map(fileName => ({
input: srcWebExtensionDir + fileName + '.ts',
output: {
format: 'esm',
file: buildWebExtensionDir + fileName + '.js',
sourcemap: false,
name: 'user-ale-ext-content',
},
plugins: [
copy({
targets: [
{src: srcWebExtensionDir + 'icons/**/*.*', dest: buildWebExtensionDir + 'icons'},
{src: srcWebExtensionDir + 'manifest.json', dest: buildWebExtensionDir},
{src: srcWebExtensionDir + 'options.html', dest: buildWebExtensionDir},
{src: srcWebExtensionDir + 'browserAction.html', dest: buildWebExtensionDir}
],
copyOnce: true
}),
json(),
nodeResolve(),
commonjs({include: /node_modules/}),
typescript({
tsconfig: "./tsconfig.json",
exclude: ["./test/**/*"]
}),
rollupBabel({
babelHelpers: "runtime",
exclude: /node_modules/,
plugins: ["@babel/plugin-transform-block-scoping"]
})
]
}))
];