rollup-plugin-typescript2/rollup.config.base.js
Anton Gilgur 3ef3289fc1
fix: add compatibility checks w/ semver (#424)
* hotfix: `this.load` was added in Rollup `2.60.0`; don't run on older versions

- this is my bad, I didn't realize `this.load` came out _much_ later than `this.resolve`
  - c.f. https://github.com/rollup/rollup/blob/master/CHANGELOG.md#2600

- since we're backward-compatible w/ Rollup `1.26.3`, add in a version check for the type-only fix
  - the type-only fix will error out in Rollup versions less than `2.60.0`, so instead of erroring out, just skip this functionality

- TODO: should move back to using `semver` that was removed in 08d2f5bcad7cb9a9a0974f3707a27d29dd89da7c

* deps: add back `semver` and use for version checking

- reverts the `semver` removal in 08d2f5bcad7cb9a9a0974f3707a27d29dd89da7c
  - add back the TS version range check

- add a Rollup version range check, fixing an old issue
- check `this.load` Rollup version with `semver` instead of string comparison

- add `semver` to `external`s list
  - also remove `resolve` as it's no longer used as of 74f6761ff63863cdb3e92ca1f33640fe6f4fc7db
  - and re-organize the list so that Node built-ins are in one section while deps are in another
    - makes it clearer what we're marking as external

* dx: add a nice warning when `this.load` is not supported

- so it doesn't just silently skip the type-only fix on Rollup versions <2.60.0

* fix(test): add globals for strings that are replaced during build

- `TS_VERSION_RANGE`, `ROLLUP_VERSION_RANGE`, `RPT2_VERSION` were previously only defined during builds, so would cause tests to fail
  - add these vars as (namespaced) globals in the Jest config so that they can be used in tests too
  - if they don't exist on `global` (or if `global` doesn't exist), then use the built strings instead
  - see in-line comments for more details

- also reorder `re` placement to match the usage order in the code
- and fix lint issues (`no-string-literal`)

Co-authored-by: Eugene Zolenko <zolenkoe@gmail.com>
2022-09-20 13:15:10 -06:00

67 lines
1.1 KiB
JavaScript

import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import replace from "rollup-plugin-re";
const pkg = require("./package.json");
export default {
input: "src/index.ts",
external: [
// Node built-ins
"fs",
"crypto",
"path",
"constants",
"stream",
"util",
"assert",
"os",
// deps
"fs-extra",
"semver",
"@rollup/pluginutils",
],
plugins: [
replace
({
replaces:
{
"$TS_VERSION_RANGE": pkg.peerDependencies.typescript,
"$ROLLUP_VERSION_RANGE": pkg.peerDependencies.rollup,
"$RPT2_VERSION": pkg.version,
},
}),
resolve({ jsnext: true, preferBuiltins: true, }),
commonjs
({
include: "node_modules/**",
}),
],
output: [
{
format: "cjs",
file: pkg.main,
sourcemap: true,
banner: "/* eslint-disable */",
exports: "auto",
},
{
format: "es",
file: pkg.module,
sourcemap: true,
banner: "/* eslint-disable */",
exports: "auto",
},
{
format: "es",
file: "build-self/" + pkg.module,
sourcemap: true,
banner: "/* eslint-disable */",
exports: "auto",
},
],
};