Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: fix installing from GitHub URL (puppeteer#5669)
The change to the install script to require TypeScript works fine when installing from npm (because on npm the `lib` directory with the compiled code already exists) but doesn't if you install from a GitHub URL. By default it seems npm uses the `files` list when you install from GitHub which means it's missing a bunch of files that we need to compile. Additionally by default when installing from a GitHub URL npm doesn't install the dependencies which is an issue for us when we need to compile TypeScript. The fix is to create a `prepare` script that runs TypeScript if required. From the npm docs [1]: > `prepare`: Run both BEFORE the package is packed and published, on > local npm install without any arguments, and when installing git > dependencies And from the npm docs on install [2], it confirms that if a package has a `prepare` script it is run when installing from GitHub: > As with regular git dependencies, dependencies and devDependencies > will be installed if the package has a prepare script, before the > package is done installing. Despite having the `prepare` script we still need the TypeScript check in `install.js` to satisfy the 3rd scenario below where we need to force a compile: * If I'm a user installing `puppeteer@X` from npm, the module is published with the `lib/` directory of compiled code, so I'm set. * If I'm a user installing Puppeteer from GitHub, the `prepare` script will run TypeScript for me so I'm set. * If I'm a developer working on Puppeteer, the `prepare` script also runs but _after_ `npm install` which means `install.js` fails as it requires `./lib/helper.js`. So in `install.js` we call `compileTypeScriptIfRequired` to catch this case. [1]: https://docs.npmjs.com/misc/scripts [2]: https://docs.npmjs.com/cli/install Co-authored-by: Mathias Bynens <[email protected]> Fixes puppeteer#5660.
- Loading branch information