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

chore: Fix import order linting error #564

Closed
wants to merge 1 commit into from
Closed

Conversation

akash1810
Copy link
Member

@akash1810 akash1810 commented May 19, 2021

What does this change?

I think this is failing because we do not observe a lockfile in the integration-test project. As eslint-plugin-import's version includes ^, we cannot guarantee what version gets used in CI. Indeed, the current latest (2.23.2) prefers import type statements to be below import statements.

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:

Does this change require changes to existing projects or CDK CLI?

No.

Does this change require changes to the library documentation?

No.

How to test

See CI.

How can we measure success?

CI passes on all branches; Dependabot branches are currently failing.

Have we considered potential risks?

n/a

@akash1810 akash1810 requested a review from a team May 19, 2021 07:05
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
@jacobwinch
Copy link
Contributor

  • Do not lint the integration-test project

I would probably vote for this (because I am lazy!)

@akash1810
Copy link
Member Author

  • Do not lint the integration-test project

I would probably vote for this (because I am lazy!)

😄 lazy is my favourite form! The absence of a lockfile still make the other dependencies non-deterministic, but there's far fewer so possibly less likely to be an issue?

Will close this and create a separate PR to strip linting out of the integration-test project.

akash1810 added a commit 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
Copy link
Member Author

Closing in favour of #569.

@akash1810 akash1810 closed this May 19, 2021
@akash1810 akash1810 deleted the aa-import-order branch May 19, 2021 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants