1. yarn-or-npm
Use Yarn or npm to execute a command
yarn-or-npm
Package: yarn-or-npm
Created by: camacho
Last modified: Wed, 29 Jun 2022 07:02:54 GMT
Version: 3.0.1
License: MIT
Downloads: 678,738
Repository: https://github.com/camacho/yarn-or-npm

Install

npm install yarn-or-npm
yarn add yarn-or-npm

yarn-or-npm

Execute scripts with Yarn or npm.

 yarn add -D yarn-or-npm
# or
npm i --save-dev yarn-or-npm

The client is determined by a series of ordered checks:

  1. yarn.lock file is in the nearest package directory - yarn
  2. package-lock.json file is in the nearest package directory - npm
  3. yarn is installed - yarn
  4. Fallback - npm

Module

 import yarnOrNpm, { spawn, hasYarn, hasNpm } from 'yarn-or-npm';

// String of `yarn` or `npm` returned
console.log(yarnOrNpm());

// Boolean values for hasYarn, hasNpm
console.log(hasYarn());

// Spawn yarn or npm command
spawn(['init']);

// Spawn sync option
spawn.sync(['init'], { stdio: 'inherit' });

Under the covers, there are cached lookup values being used for efficiency. These can be manually cleared:

 import yarnOrNpm from 'yarn-or-npm';
import { spawnSync } from 'child_process';

console.log(yarnOrNpm.hasYarn()); // false

spawnSync('npm', ['i', '-g', 'yarn'], { stdio: 'inherit' });

console.log(yarnOrNpm.hasYarn()); // false (cached)

yarnOrNpm.clearCache();
console.log(yarnOrNpm.hasYarn()); // true

CLI

 yarn-or-npm <command>
# Can also use `yon` shorthand
yon <command>

Package

Modules with bin files can be called directly in package.json scripts:

 {
  "devDependencies": {
    ...
    "yarn-or-npm": "^1.0.0"
  },
  "scripts": {
    "compile": "babel src --out-dir dist",
    "lint": "eslint .",
    "prepublish": "yarn-or-npm run lint && yarn-or-npm run compile"
  }
}

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code