Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: bump Rollup peerDep to 3.7.5+, remove tech debt #458

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 3 additions & 11 deletions README.md
Expand Up @@ -65,10 +65,6 @@ This also allows for passing in different `tsconfig` files depending on your bui

Must be before `rollup-plugin-typescript2` in the plugin list, especially when the `browser: true` option is used (see [#66](https://github.com/ezolenko/rollup-plugin-typescript2/issues/66)).

#### @rollup/plugin-commonjs

See the explanation for `rollupCommonJSResolveHack` option below.

#### @rollup/plugin-babel

This plugin transpiles code, but doesn't change file extensions. `@rollup/plugin-babel` only looks at code with these extensions [by default](https://github.com/rollup/plugins/tree/master/packages/babel#extensions): `.js,.jsx,.es6,.es,.mjs`. To workaround this, add `.ts` and `.tsx` to its list of extensions.
Expand Down Expand Up @@ -165,14 +161,10 @@ See [#108](https://github.com/ezolenko/rollup-plugin-typescript2/issues/108)
Bail out on first syntactic or semantic error.
In some cases, setting this to false will result in an exception in Rollup itself (for example, unresolvable imports).

* `rollupCommonJSResolveHack`: false

_Deprecated_. OS native paths are now _always_ used since [`0.30.0`](https://github.com/ezolenko/rollup-plugin-typescript2/releases/0.30.0) (see [#251](https://github.com/ezolenko/rollup-plugin-typescript2/pull/251)), so this no longer has any effect -- as if it is always `true`.

* `objectHashIgnoreUnknownHack`: false

The plugin uses your Rollup config as part of its cache key.
`object-hash` is used to generate a hash, but it can have trouble with some uncommon types of elements.
[`object-hash`](https://github.com/puleos/object-hash) is used to generate a hash, but it can have trouble with some uncommon types of elements.
Setting this option to true will make `object-hash` ignore unknowns, at the cost of not invalidating the cache if ignored elements are changed.

Only enable this option if you need it (e.g. if you get `Error: Unknown object type "xxx"`) and make sure to run with `clean: true` once in a while and definitely before a release.
Expand Down Expand Up @@ -238,8 +230,8 @@ Otherwise the plugin should work in watch mode. Make sure to run a normal build
### Requirements

* TypeScript `2.4+`
* Rollup `1.26.3+`
* Node `6.4.0+` (basic ES6 support)
* Rollup `3.7.5+`
* Node `14.18.0+` (Rollup [requirement](https://github.com/rollup/rollup/blob/096ae92972a920dc53c3bbe9b1001ea82a15e86a/package.json#L133))

### Reporting bugs and Contributing

Expand Down
1 change: 0 additions & 1 deletion __tests__/fixtures/options.ts
Expand Up @@ -15,7 +15,6 @@ export function makeOptions(cacheDir: string, cwd: string): IOptions {
cacheRoot: cacheDir,
cwd,
abortOnError: false,
rollupCommonJSResolveHack: false,
typescript: ts,
objectHashIgnoreUnknownHack: false,
tsconfigOverride: null,
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -39,7 +39,7 @@
"tslib": "^2.4.0"
},
"peerDependencies": {
"rollup": ">=1.26.3",
"rollup": ">=3.7.5",
"typescript": ">=2.4.0"
},
"devDependencies": {
Expand Down
29 changes: 3 additions & 26 deletions src/index.ts
Expand Up @@ -28,7 +28,6 @@ export { RPT2Options }
const typescript: PluginImpl<RPT2Options> = (options) =>
{
let watchMode = false;
let supportsThisLoad = false;
let generateRound = 0;
let rollupOptions: InputOptions;
let context: RollupContext;
Expand Down Expand Up @@ -98,7 +97,6 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
include: ["*.ts+(|x)", "**/*.ts+(|x)", "**/*.cts", "**/*.mts"],
exclude: ["*.d.ts", "**/*.d.ts", "**/*.d.cts", "**/*.d.mts"],
abortOnError: true,
rollupCommonJSResolveHack: false,
tsconfig: undefined,
useTsconfigDeclarationDir: false,
tsconfigOverride: {},
Expand Down Expand Up @@ -128,7 +126,7 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
{
context = new RollupContext(pluginOptions.verbosity, pluginOptions.abortOnError, this, "rpt2: ");

watchMode = process.env.ROLLUP_WATCH === "true" || !!this.meta.watchMode; // meta.watchMode was added in 2.14.0 to capture watch via Rollup API (i.e. no env var) (c.f. https://github.com/rollup/rollup/blob/master/CHANGELOG.md#2140)
watchMode = !!this.meta.watchMode;
({ parsedTsConfig: parsedConfig, fileName: tsConfigPath } = parseTsConfig(context, pluginOptions));

// print out all versions and configurations
Expand All @@ -142,21 +140,11 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
if (!satisfies(this.meta.rollupVersion, ROLLUP_VERSION_RANGE, { includePrerelease: true }))
context.error(`Installed Rollup version '${this.meta.rollupVersion}' is outside of supported range '${ROLLUP_VERSION_RANGE}'`);

supportsThisLoad = satisfies(this.meta.rollupVersion, ">=2.60.0", { includePrerelease : true }); // this.load is 2.60.0+ only (c.f. https://github.com/rollup/rollup/blob/master/CHANGELOG.md#2600)
if (!supportsThisLoad)
context.warn(() => `${yellow("You are using a Rollup version '<2.60.0'")}. This may result in type-only files being ignored.`);

context.info(`rollup-plugin-typescript2 version: ${RPT2_VERSION}`);
context.debug(() => `plugin options:\n${JSON.stringify(pluginOptions, (key, value) => key === "typescript" ? `version ${(value as typeof tsModule).version}` : value, 4)}`);
context.debug(() => `rollup config:\n${JSON.stringify(rollupOptions, undefined, 4)}`);
context.debug(() => `tsconfig path: ${tsConfigPath}`);

if (pluginOptions.objectHashIgnoreUnknownHack)
context.warn(() => `${yellow("You are using 'objectHashIgnoreUnknownHack' option")}. If you enabled it because of async functions, try disabling it now.`);

if (pluginOptions.rollupCommonJSResolveHack)
context.warn(() => `${yellow("You are using 'rollupCommonJSResolveHack' option")}. This is no longer needed, try disabling it now.`);

if (watchMode)
context.info(`running in watch mode`);

Expand Down Expand Up @@ -275,7 +263,7 @@ const typescript: PluginImpl<RPT2Options> = (options) =>

// handle all type-only imports by resolving + loading all of TS's references
// Rollup can't see these otherwise, because they are "emit-less" and produce no JS
if (result.references && supportsThisLoad) {
if (result.references) {
for (const ref of result.references) {
if (!filter(ref))
continue;
Expand Down Expand Up @@ -312,18 +300,7 @@ const typescript: PluginImpl<RPT2Options> = (options) =>
{
generateRound = 0; // in watch mode, buildEnd resets generate count just before generateBundle for each output

if (err)
{
buildDone();
// workaround: err.stack contains err.message and Rollup prints both, causing duplication, so split out the stack itself if it exists (c.f. https://github.com/ezolenko/rollup-plugin-typescript2/issues/103#issuecomment-1172820658)
const stackOnly = err.stack?.split(err.message)[1];
if (stackOnly)
this.error({ ...err, message: err.message, stack: stackOnly });
else
this.error(err);
}

if (!pluginOptions.check)
if (err || !pluginOptions.check)
return buildDone();

// walkTree once on each cycle when in watch mode
Expand Down
1 change: 0 additions & 1 deletion src/ioptions.ts
Expand Up @@ -21,7 +21,6 @@ export interface IOptions
clean: boolean;
cacheRoot: string;
abortOnError: boolean;
rollupCommonJSResolveHack: boolean;
tsconfig?: string;
useTsconfigDeclarationDir: boolean;
typescript: typeof tsModule;
Expand Down