2019-11-12 11:55:22 +00:00
|
|
|
import resolve from "rollup-plugin-node-resolve";
|
|
|
|
import commonjs from "rollup-plugin-commonjs";
|
|
|
|
import json from "rollup-plugin-json";
|
|
|
|
import babel from "rollup-plugin-babel";
|
|
|
|
import cleanup from "rollup-plugin-cleanup";
|
|
|
|
import replace from "rollup-plugin-replace";
|
2020-10-16 12:38:04 +00:00
|
|
|
import postcss from "rollup-plugin-postcss";
|
|
|
|
import copy from "rollup-plugin-copy";
|
2019-11-12 11:55:22 +00:00
|
|
|
import svgrPlugin from "@svgr/rollup";
|
2020-10-16 12:38:04 +00:00
|
|
|
import generatePackageJson from "rollup-plugin-generate-package-json";
|
2019-11-12 11:55:22 +00:00
|
|
|
import pkg from "./package.json";
|
|
|
|
|
|
|
|
const getBabelPreset = require("./scripts/get-babel-preset");
|
|
|
|
|
|
|
|
const babelOptions = getBabelPreset();
|
|
|
|
|
|
|
|
// This list includes common plugins shared between each output format.
|
|
|
|
// NOTE: the order of the plugins is important!
|
|
|
|
const configureRollupPlugins = (options = {}) => [
|
|
|
|
generatePackageJson({
|
|
|
|
baseContents: {
|
|
|
|
name: pkg.name,
|
|
|
|
version: pkg.version,
|
|
|
|
description: pkg.description,
|
|
|
|
license: pkg.license,
|
|
|
|
main: pkg.main,
|
|
|
|
module: pkg.module,
|
2020-10-16 12:38:04 +00:00
|
|
|
peerDependencies: {
|
|
|
|
...pkg.peerDependencies,
|
|
|
|
"asc-web-components": "file:../asc-web-components",
|
|
|
|
},
|
2019-11-12 11:55:22 +00:00
|
|
|
},
|
2020-10-16 12:38:04 +00:00
|
|
|
outputFolder: "../../packages/asc-web-common",
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
replace({
|
2020-10-16 12:38:04 +00:00
|
|
|
"process.env.NODE_ENV": JSON.stringify("production"),
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
// To use the nodejs `resolve` algorithm
|
|
|
|
resolve(),
|
|
|
|
// See also https://medium.com/@kelin2025/so-you-wanna-use-es6-modules-714f48b3a953
|
|
|
|
// Transpile sources using our custom babel preset.
|
|
|
|
babel({
|
|
|
|
exclude: ["node_modules/**"],
|
|
|
|
runtimeHelpers: true,
|
|
|
|
...babelOptions,
|
|
|
|
plugins: [
|
|
|
|
...babelOptions.plugins,
|
2020-10-16 12:38:04 +00:00
|
|
|
...(options.babel && options.babel.plugins ? options.babel.plugins : []),
|
|
|
|
],
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
// To convert CJS modules to ES6
|
|
|
|
commonjs({
|
2020-10-16 12:38:04 +00:00
|
|
|
include: "node_modules/**",
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
// To convert JSON files to ES6
|
|
|
|
json(),
|
|
|
|
// To convert SVG Icons to ES6
|
|
|
|
svgrPlugin({
|
|
|
|
// NOTE: only the files ending with `.react.svg` are supposed to be
|
|
|
|
// converted to React components
|
|
|
|
include: ["**/*.react.svg"],
|
|
|
|
icon: false,
|
|
|
|
svgoConfig: {
|
|
|
|
plugins: [
|
|
|
|
{ removeViewBox: false },
|
|
|
|
// Keeps ID's of svgs so they can be targeted with CSS
|
2020-10-16 12:38:04 +00:00
|
|
|
{ cleanupIDs: false },
|
|
|
|
],
|
|
|
|
},
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
postcss({
|
2020-10-16 12:38:04 +00:00
|
|
|
extensions: [".css"],
|
2019-11-12 11:55:22 +00:00
|
|
|
}),
|
|
|
|
// To remove comments, trim trailing spaces, compact empty lines,
|
|
|
|
// and normalize line endings
|
2020-10-16 12:38:04 +00:00
|
|
|
cleanup(),
|
2019-11-12 11:55:22 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
const deps = Object.keys(pkg.dependencies || {});
|
|
|
|
const peerDeps = Object.keys(pkg.peerDependencies || {});
|
|
|
|
const defaultExternal = ["stream", ...deps.concat(peerDeps)];
|
|
|
|
|
|
|
|
// We need to define 2 separate configs (`esm` and `cjs`) so that each can be
|
|
|
|
// further customized.
|
|
|
|
const config = [
|
|
|
|
{
|
|
|
|
input: "src/index.js",
|
|
|
|
external: defaultExternal,
|
|
|
|
output: {
|
|
|
|
file: pkg.module,
|
|
|
|
format: "esm",
|
2020-10-16 12:38:04 +00:00
|
|
|
sourcemap: true,
|
2019-11-12 11:55:22 +00:00
|
|
|
},
|
|
|
|
plugins: configureRollupPlugins({
|
|
|
|
babel: {
|
|
|
|
plugins: [
|
|
|
|
[
|
|
|
|
"transform-rename-import",
|
|
|
|
{
|
2020-10-16 12:38:04 +00:00
|
|
|
replacements: [{ original: "lodash", replacement: "lodash-es" }],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
}),
|
2019-11-12 11:55:22 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
input: "src/index.js",
|
|
|
|
external: defaultExternal,
|
|
|
|
output: {
|
|
|
|
file: pkg.main,
|
|
|
|
format: "cjs",
|
2020-10-16 12:38:04 +00:00
|
|
|
sourcemap: true,
|
2019-11-12 11:55:22 +00:00
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
...configureRollupPlugins(),
|
|
|
|
copy({
|
2020-10-16 12:38:04 +00:00
|
|
|
targets: [
|
|
|
|
{ src: "dist", dest: "../../packages/asc-web-common" },
|
|
|
|
{ src: "README.md", dest: "../../packages/asc-web-common" },
|
|
|
|
],
|
|
|
|
verbose: true,
|
|
|
|
}),
|
|
|
|
],
|
|
|
|
},
|
2019-11-12 11:55:22 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
export default config;
|