Skip to content
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

chore: Fix installing from GitHub URL #5669

Merged
merged 2 commits into from Apr 17, 2020
Merged

Commits on Apr 17, 2020

  1. chore: Fix installing from GitHub URL

    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
    jackfranklin committed Apr 17, 2020
    Copy the full SHA
    d5f985f View commit details
    Browse the repository at this point in the history
  2. Copy the full SHA
    4870811 View commit details
    Browse the repository at this point in the history