npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pm-exec

v1.0.0

Published

Execute whichever package manager is currently running

Downloads

128

Readme

npm package License Build Status Issues

pm-exec - Execute whichever package manager is currently running

It is not easy to create agnostic Node.js packages, able to run with whichever package manager the developer wants. Indeed, you often need to call the package manager name inside the package.json scripts in order to, for example, run sub-scripts.

The purpose of pm-exec is to detect which package manager is currently running and call it again with provided arguments.

Language/langue

Because Slune is French firm, you will find all documents and messages in French. Other translations are welcome.

Anyway, because English is the language of programming, the code, including variable names and comments, are in English.

:fr: Une version française de ce document se trouve ici.

Installation

Installation is done using npm install command:

$ npm install --save-dev pm-exec

If you prefer using yarn:

$ yarn add -D pm-exec

Usage

Let's say you have a package.json containing those scripts:

{
  "scripts": {
    "test": "npm run test:lint && npm run test:dep && npm run test:unit && npm run test:integration",
    "test:lint": "eslint 'src/**/*.ts'",
    "test:dep": "depcheck",
    "test:unit": "nyc mocha 'src/**/*.spec.ts'",
    "test:integration": "cd __test__ && npm install && npm test"
  }
}

Then, another developer wants to work on it, but he prefers using pnpm. He will run pnpm test to execute the tests. Unfortunately, this command will execute npm to run test:lint, test:dep and test:unit, which, if it is a little bit annoying, does not really matter. But it will also use npm to run test:integration which is installing dependencies of a test project. This is more problematic as it will loose all the advantages of pnpm and duplicate the cached dependencies.

If pm-exec is installed, you can change your package.json to the following:

{
  "scripts": {
    "test": "pm-exec run test:lint && pm-exec run test:dep && pm-exec run test:unit && pm-exec run test:integration",
    "test:lint": "eslint 'src/**/*.ts'",
    "test:dep": "depcheck",
    "test:unit": "nyc mocha 'src/**/*.spec.ts'",
    "test:integration": "cd __test__ && pm-exec install && pm-exec test"
  }
}

Now, if you want to run yarn test, then yarn will also be used to execute test:lint, test:dep, test:unit and test:integration. And it will also be used in test:integration to execute install and test.

Issues, questions, contributions

Even though we cannot guarantee a response time, please feel free to file an issue if you have any question or problem using the package. Pull Requests are also welcome.