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

[New] order: support type imports #2021

Merged
merged 1 commit into from May 12, 2021

Conversation

geraintwhite
Copy link
Contributor

Fixes #645

@coveralls
Copy link

Coverage Status

Coverage increased (+1.9%) to 71.37% when pulling 2ee0b7b on grit96:order-type-import-support into e871a9a on benmosher:master.

1 similar comment
@coveralls
Copy link

Coverage Status

Coverage increased (+1.9%) to 71.37% when pulling 2ee0b7b on grit96:order-type-import-support into e871a9a on benmosher:master.

@coveralls
Copy link

coveralls commented Apr 1, 2021

Coverage Status

Coverage increased (+12.9%) to 84.021% when pulling 1c10e79 on grit96:order-type-import-support into ab0181d on benmosher:master.

@ljharb ljharb changed the title [Fix] order: support type imports [New] order: support type imports May 12, 2021
@ljharb ljharb force-pushed the order-type-import-support branch from 2ee0b7b to 1c10e79 Compare May 12, 2021 16:23
@ljharb ljharb merged commit 1c10e79 into import-js:master May 12, 2021
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
Not entirely sure how this got missed...

See:
  - import-js/eslint-plugin-import#2021
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
Not entirely sure how this got missed, but it looks like CI on `main` is failing because of it.

See:
  - import-js/eslint-plugin-import#2021
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
I think this is failing because we do not observe a lockfile in the [integration-test project](https://github.com/guardian/cdk/blob/9b9a91bc03f507ba4d688024b4fc8059a617f9d0/integration-test/script/ci#L5-L8).
As `eslint-plugin-import`'s version includes `^`, we cannot guarantee what version gets used in CI.

Options:
  - Use pinned versions in the integration-test project (I'm not sure if dependabot works with pinned dependency versions)
  - Do not lint the integration-test project
  - Use a lockfile and install @guardian/cdk into the integration-test project with `--no-package-lock`

See:
  - import-js/eslint-plugin-import#2021
  - https://docs.npmjs.com/cli/v6/commands/npm-install#:~:text=--no-package-lock
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
I think this is failing because we do not observe a lockfile in the [integration-test project](https://github.com/guardian/cdk/blob/9b9a91bc03f507ba4d688024b4fc8059a617f9d0/integration-test/script/ci#L5-L8).
As `eslint-plugin-import`'s version includes `^`, we cannot guarantee what version gets used in CI.

We hadn't seen it locally as we don't do a fresh install. If you delete integration-test/node_modules and lint the integration-test project, the error can be seen.

Options:
  - Use pinned versions in the integration-test project (I'm not sure if dependabot works with pinned dependency versions)
  - Do not lint the integration-test project
  - Use a lockfile and install @guardian/cdk into the integration-test project with `--no-package-lock` (not sure if this is possible as @guardian/cdk will remain in `package.json`)

See:
  - import-js/eslint-plugin-import#2021
  - https://docs.npmjs.com/cli/v6/commands/npm-install#:~:text=--no-package-lock
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
Version 2.23.2 of `eslint-plugin-import` prefers to `import` statements
above `import type`.

We do not have a lockfile for the `integration-test` project because:

> Ignore package-lock.json to avoid the following error when reinstalling dependencies:
> npm ERR! notarget No matching version found for eslint-plugin-custom-rules@1.0.0.
> This is because we're installing @guardian/cdk from file, which is in turn installing eslint-plugin-custom-rules from file.

Combined this with the version of `eslint-plugin-import` is defined with `^`,
linting is non-deterministic* and we only saw an import order linting error locally
after removing `node_modules`.

There are a couple of ways to improve this:
  - Work out how to use a lockfile in the integration-test
  - Remove linting and hope the other dependencies using `^` versions are OK

This change removes linting, with the justification that:
  - This project is never consumed by anyone
  - This project doesn't run anywhere
  - This project doesn't get updated too often
  - Understanding the original lockfile issues is a time sink

See:
  - import-js/eslint-plugin-import#2021
  - #564

* Well, the entire build of integration-test is non-deterministic!
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
I think this is failing because we do not observe a lockfile in the [integration-test project](https://github.com/guardian/cdk/blob/9b9a91bc03f507ba4d688024b4fc8059a617f9d0/integration-test/script/ci#L5-L8).
As `eslint-plugin-import`'s version includes `^`, we cannot guarantee what version gets used in CI.

We hadn't seen it locally as we don't do a fresh install. If you delete integration-test/node_modules and lint the integration-test project, the error can be seen.

Options:
  - Use pinned versions in the integration-test project (I'm not sure if dependabot works with pinned dependency versions)
  - Do not lint the integration-test project
  - Use a lockfile and install @guardian/cdk into the integration-test project with `--no-package-lock` (not sure if this is possible as @guardian/cdk will remain in `package.json`)

See:
  - import-js/eslint-plugin-import#2021
  - https://docs.npmjs.com/cli/v6/commands/npm-install#:~:text=--no-package-lock
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
I think this is failing because we do not observe a lockfile in the [integration-test project](https://github.com/guardian/cdk/blob/9b9a91bc03f507ba4d688024b4fc8059a617f9d0/integration-test/script/ci#L5-L8).
As `eslint-plugin-import`'s version includes `^`, we cannot guarantee what version gets used in CI.

We hadn't seen it locally as we don't do a fresh install. If you delete integration-test/node_modules and lint the integration-test project, the error can be seen.

Options:
  - Use pinned versions in the integration-test project (I'm not sure if dependabot works with pinned dependency versions)
  - Do not lint the integration-test project
  - Use a lockfile and install @guardian/cdk into the integration-test project with `--no-package-lock` (not sure if this is possible as @guardian/cdk will remain in `package.json`)

See:
  - import-js/eslint-plugin-import#2021
  - https://docs.npmjs.com/cli/v6/commands/npm-install#:~:text=--no-package-lock
akash1810 added a commit to guardian/cdk that referenced this pull request May 19, 2021
This version of eslint-plugin-import prefers `import` statements to appear before `import type`.

This change fixes these linting errors.

See:
  - import-js/eslint-plugin-import#2021
dependabot bot pushed a commit to guardian/cdk that referenced this pull request May 19, 2021
This version of eslint-plugin-import prefers `import` statements to appear before `import type`.

This change fixes these linting errors.

See:
  - import-js/eslint-plugin-import#2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

Add type import support to import/order
3 participants