puppeteer/vendor/README.md
jrandolf f8de7b1273
chore: bundle vendor code (#9016)
This PR removes the manual vendoring process. Third party code can now
be updated using the typical NPM pipeline with types/code bundling done
through Rollup.
2022-09-28 13:03:19 +02:00

29 lines
1.1 KiB
Markdown

# `vendor`
This folder contains code that interacts with third party node modules that will
be vendored with puppeteer during publishing.
## Why not `node_modules`?
Because we are working towards an agnostic Puppeteer that can run in any
environment (see [#6125](https://github.com/puppeteer/puppeteer/issues/6125)) we
cannot import common dependencies in a way that relies on Node's resolution to
find them. For example, `import mitt from 'mitt'` works fine in Node, but in an
ESM build running in an environment without module resolution such as the
browser, `'mitt'` would not make sense.
The process for installing/using a vendored dependency is a two-step process:
1. Create a folder named after the package. See the `node_modules` folder for
inspiration.
2. Create an entrypoint that exports needed imports from the package. For
example, `index.ts` may contain
```ts
export * from 'your-package';
export {default as default} from 'your-package';
```
Now if you need to import from the dependency, you need to import relative to
this directory rather than the package name itself.