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
Cannot install v3.0.0-post from GitHub URL #5660
Comments
FWIW, I don't have @jackfranklin could you PTAL? |
|
@vsemozhetbyt thanks for this bug report! I'm looking into this now. |
So it looks like when you install from GitHub npm doesn't do a clone of the repo but still only includes the files you ask it to - so what's happening here is it's not downloading our dependencies or any files we need to enable TypeScript to run. I'm looking into how we can fix this but it might take a bit of time to find the right solution. In the mean time given the GitHub repo is almost identical to the |
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. Fixes #5660. [1]: https://docs.npmjs.com/misc/scripts [2]: https://docs.npmjs.com/cli/install
@vsemozhetbyt please could you try installing from GitHub via this branch? #5660 For me testing that has solved the problem. |
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 <mathias@qiwi.be> Fixes #5660.
Update: #5660 has been merged so this can now be tested via |
Unfortunately, it fails for me with a new error:
|
Still the same errors with |
The text was updated successfully, but these errors were encountered: