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: add a prepare step so that git dependencies build #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

aspiers
Copy link

@aspiers aspiers commented Jan 1, 2025

It is convenient to be able to specify dependencies in package.json which point to particular git commits. One use case is allowing dependencies on PRs which are not yet merged and published to npm.org, such as

in order to obtain functioning ESM support.

In theory this should be achievable via:

"vitest-chrome": "probil/vitest-chrome#5fb1634b"

https://docs.npmjs.com/cli/v8/configuring-npm/package-json#git-urls-as-dependencies
states:

When installing from a git repository, the presence of certain fields in the package.json will cause npm to believe it needs to perform a build. To do so your repository will be cloned into a temporary directory, all of its deps installed, relevant scripts run, and the resulting directory packed and installed.

This flow will occur if your git dependency uses workspaces, or if any of the following scripts are present:

  • build
  • prepare
  • prepack
  • preinstall
  • install
  • postinstall

However it seems that, at least with pnpm, the presence of a build step is not sufficient.

So add a prepare step which just dispatches to the build step. This makes vitest-chrome installable via a git dependency.

See also the backport: extend-chrome#37

It is convenient to be able to specify dependencies in package.json
which point to particular git commits.  One use case is allowing
dependencies on PRs which are not yet merged and published to npm.org,
such as

    probil#1

in order to obtain functioning ESM support.

In theory this should be achievable via:

    "vitest-chrome": "probil/vitest-chrome#5fb1634b"

https://docs.npmjs.com/cli/v8/configuring-npm/package-json#git-urls-as-dependencies
states:

> When installing from a git repository, the presence of certain fields
> in the package.json will cause npm to believe it needs to perform a
> build. To do so your repository will be cloned into a temporary
> directory, all of its deps installed, relevant scripts run, and the
> resulting directory packed and installed.
>
> This flow will occur if your git dependency uses workspaces, or if
> any of the following scripts are present:
>
> - `build`
> - `prepare`
> - `prepack`
> - `preinstall`
> - `install`
> - `postinstall`

However it seems that, at least with pnpm, the presence of a `build`
step is not sufficient.

So add a `prepare` step which just dispatches to the `build` step.
This makes vitest-chrome installable via a git dependency.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant