Skip to content

Conversation

@Rich-Harris
Copy link
Member

#993.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests

  • Run the tests with pnpm test and lint the project with pnpm lint

Changesets

  • If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpx changeset and following the prompts

@TrySound
Copy link

Yarn 3 fixes the problem
https://github.com/yarnpkg/berry/blob/master/CHANGELOG.md#300-rc1


You probably don't need it. We'd generally recommend you just use `fetch` instead. If you insist, you're probably better off using the ESM drop-in replacement `redaxios` [until axios utilizes ESM](https://github.com/axios/axios/issues/1879). Finally, if you still want to use Axios itself, try putting it in `optimizeDeps.include`.

### Does it work with Yarn 2?
Copy link

@merceyz merceyz Apr 14, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Does it work with Yarn 2?
### Does it work with Yarn PnP?

Yarn 1 and pnpm support PnP


### Does it work with Yarn 2?

Sort of. The Plug'n'Play feature, aka 'pnp', is broken (it deviates from the Node module resolution algorithm, and doesn't work with native JavaScript modules which SvelteKit — along with an [increasing number of packages](https://blog.sindresorhus.com/get-ready-for-esm-aa53530b3f77) — uses). You can use `nodeLinker: 'node-modules'` in your [`.yarnrc.yml`](https://yarnpkg.com/configuration/yarnrc#nodeLinker) file to disable pnp, but it's probably easier to just use npm or [pnpm](https://pnpm.io/), which is similarly fast and efficient but without the compatibility headaches.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Sort of. The Plug'n'Play feature, aka 'pnp', is broken (it deviates from the Node module resolution algorithm, and doesn't work with native JavaScript modules which SvelteKit — along with an [increasing number of packages](https://blog.sindresorhus.com/get-ready-for-esm-aa53530b3f77) — uses). You can use `nodeLinker: 'node-modules'` in your [`.yarnrc.yml`](https://yarnpkg.com/configuration/yarnrc#nodeLinker) file to disable pnp, but it's probably easier to just use npm or [pnpm](https://pnpm.io/), which is similarly fast and efficient but without the compatibility headaches.
Sort of. The Plug'n'Play feature, aka 'pnp', [doesn't work with native JavaScript modules yet](https://github.com/yarnpkg/berry/issues/638) which SvelteKit — along with an [increasing number of packages](https://blog.sindresorhus.com/get-ready-for-esm-aa53530b3f77) — uses). You can use `nodeLinker: 'node-modules'` in your [`.yarnrc.yml`](https://yarnpkg.com/configuration/yarnrc#nodeLinker) file for Yarn 2+ to use the `node_modules` layout instead.

@Rich-Harris
Copy link
Member Author

Yarn 3 fixes the problem

A Yarn maintainer confirmed that this isn't the case, at least not yet.

@merceyz thank you for the review. We stand by the wording here though — PnP is broken if the threshold is parity with Node's default behaviour, for the two reasons given. It's true that it's possible to disable PnP, but as long as it's the default it will continue to cause confusion in the JS ecosystem. As maintainers who have been affected by that confusion we feel that the recommendation to use alternative package managers is justified.

@Rich-Harris Rich-Harris merged commit eacd330 into master Apr 16, 2021
@Rich-Harris Rich-Harris deleted the yarn-faq branch April 16, 2021 21:53
@avarun42
Copy link
Contributor

avarun42 commented Mar 4, 2022

Is this still true after PRs yarnpkg/berry#2161 and yarnpkg/berry#3667 got merged? From a cursory glance it seems like PnP supports ES Modules now — can anyone confirm if that means Yarn 3.1+ work with SvelteKit? @Rich-Harris

@dummdidumm
Copy link
Member

We don't use yarn, but you are welcome to try it out and report back if it works now

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.

6 participants