123 строки
3.3 KiB
JavaScript
123 строки
3.3 KiB
JavaScript
/*
|
|
* Copyright (c) Microsoft Corporation.
|
|
* Licensed under the MIT License.
|
|
*
|
|
* Code generated by Microsoft (R) AutoRest Code Generator.
|
|
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
*/
|
|
|
|
import nodeResolve from "@rollup/plugin-node-resolve";
|
|
import cjs from "@rollup/plugin-commonjs";
|
|
import sourcemaps from "rollup-plugin-sourcemaps";
|
|
import multiEntry from "@rollup/plugin-multi-entry";
|
|
import json from "@rollup/plugin-json";
|
|
|
|
import nodeBuiltins from "builtin-modules";
|
|
|
|
// #region Warning Handler
|
|
|
|
/**
|
|
* A function that can determine whether a rollup warning should be ignored. If
|
|
* the function returns `true`, then the warning will not be displayed.
|
|
*/
|
|
|
|
function ignoreNiseSinonEval(warning) {
|
|
return (
|
|
warning.code === "EVAL" &&
|
|
warning.id &&
|
|
(warning.id.includes("node_modules/nise") ||
|
|
warning.id.includes("node_modules/sinon")) === true
|
|
);
|
|
}
|
|
|
|
function ignoreChaiCircularDependency(warning) {
|
|
return (
|
|
warning.code === "CIRCULAR_DEPENDENCY" &&
|
|
warning.importer && warning.importer.includes("node_modules/chai") === true
|
|
);
|
|
}
|
|
|
|
const warningInhibitors = [ignoreChaiCircularDependency, ignoreNiseSinonEval];
|
|
|
|
/**
|
|
* Construct a warning handler for the shared rollup configuration
|
|
* that ignores certain warnings that are not relevant to testing.
|
|
*/
|
|
function makeOnWarnForTesting() {
|
|
return (warning, warn) => {
|
|
// If every inhibitor returns false (i.e. no inhibitors), then show the warning
|
|
if (warningInhibitors.every((inhib) => !inhib(warning))) {
|
|
warn(warning);
|
|
}
|
|
};
|
|
}
|
|
|
|
// #endregion
|
|
|
|
function makeBrowserTestConfig() {
|
|
const config = {
|
|
input: {
|
|
include: ["dist-esm/test/**/*.spec.js"],
|
|
exclude: ["dist-esm/test/**/node/**"]
|
|
},
|
|
output: {
|
|
file: `dist-test/index.browser.js`,
|
|
format: "umd",
|
|
sourcemap: true
|
|
},
|
|
preserveSymlinks: false,
|
|
plugins: [
|
|
multiEntry({ exports: false }),
|
|
nodeResolve({
|
|
mainFields: ["module", "browser"]
|
|
}),
|
|
cjs(),
|
|
json(),
|
|
sourcemaps()
|
|
//viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
|
|
],
|
|
onwarn: makeOnWarnForTesting(),
|
|
// Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0,
|
|
// rollup started respecting the "sideEffects" field in package.json. Since
|
|
// our package.json sets "sideEffects=false", this also applies to test
|
|
// code, which causes all tests to be removed by tree-shaking.
|
|
treeshake: false
|
|
};
|
|
|
|
return config;
|
|
}
|
|
|
|
const defaultConfigurationOptions = {
|
|
disableBrowserBundle: false
|
|
};
|
|
|
|
export function makeConfig(pkg, options) {
|
|
options = {
|
|
...defaultConfigurationOptions,
|
|
...(options || {})
|
|
};
|
|
|
|
const baseConfig = {
|
|
// Use the package's module field if it has one
|
|
input: pkg["module"] || "dist-esm/src/index.js",
|
|
external: [
|
|
...nodeBuiltins,
|
|
...Object.keys(pkg.dependencies),
|
|
...Object.keys(pkg.devDependencies)
|
|
],
|
|
output: { file: "dist/index.js", format: "cjs", sourcemap: true },
|
|
preserveSymlinks: false,
|
|
plugins: [sourcemaps(), nodeResolve()]
|
|
};
|
|
|
|
const config = [baseConfig];
|
|
|
|
if (!options.disableBrowserBundle) {
|
|
config.push(makeBrowserTestConfig());
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
export default makeConfig(require("./package.json"));
|