summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/vendor/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /remote/test/puppeteer/vendor/README.md
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'remote/test/puppeteer/vendor/README.md')
-rw-r--r--remote/test/puppeteer/vendor/README.md13
1 files changed, 13 insertions, 0 deletions
diff --git a/remote/test/puppeteer/vendor/README.md b/remote/test/puppeteer/vendor/README.md
new file mode 100644
index 0000000000..bca3d5e10f
--- /dev/null
+++ b/remote/test/puppeteer/vendor/README.md
@@ -0,0 +1,13 @@
+# Vendoring third party dependencies
+
+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 the browser, the browser has no idea where to find `'mitt'`.
+
+Therefore we put all common dependencies into this directory, `vendor`. This means there are extra criteria for these dependencies; ideally they will not depend on any other modules. If they do, we should consider an alternative way of managing our dependencies.
+
+The process for updating a vendored dependency is:
+
+1. `npm install {DEP NAME HERE}`
+2. `cp -r node_modules/DEP vendor`
+3. Update `eslintrc.js` to forbid importing DEP directly (see the `Mitt` rule already defined in there).
+4. Use the new DEP, and run `npm run tsc` to check everything compiles successfully.
+5. If the dep ships as compiled JS, you may need to disable TypeScript checking the file. Add an entry to the `excludes` property of the TSConfig files in `vendor`. (again, see the entry that's already there for Mitt as an example). Don't forget to update both the ESM and CJS config files.