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

@igor.dvlpr/simple-exec

v2.0.0

Published

🕺 Command. Execution. Made. Simple. ▶

Downloads

9

Readme

📃 Table of contents

🕵🏼 Usage

Install it by executing:

npm i '@igor.dvlpr/simple-exec'

🤹🏼 API

The API exposes two types:

  • ExecResult
  • ExecCallback

Types

ExecResult

A simple object structured as:

{ 
  error: string,
  output: string
}

ExecCallback

A callback with the method signature of:

type ExecCallback = (result: ExecResult) => void

Functions

executeSync(command: string): ExecResult

Synchronously executes the specified command.

command - Command to execute.

Will throw an error if no command is provided.
Returns the ExecResult object with standard and error outputs.

import { executeSync } from '@igor.dvlpr/simple-exec'

const result = executeSync('dir /b')

if (result.error) {
  console.error(result.error) // log the error
} else {
  console.log(result.output) // log the contents of the directory
}

executeCallback(command: string, callback: ExecCallback): void

Asynchronously, with a callback executes the specified command.

command - Command to execute.
callback - The function to call after the command is executed.

Will throw an error if no command is provided.

import { executeCallback } from '@igor.dvlpr/simple-exec'

executeCallback('node --version', (result) => {
  if (result.error) {
    console.error(result.error) // log the error
  } else {
    console.log(result.output) // log Node version
  }
})

execute(command: string): Promise<string>

Asynchronously executes the specified command.

command - Command to execute.

Will throw an error if no command is provided.
Returns the standard output.

import { execute } from '@igor.dvlpr/simple-exec'

try {
  const result: string = await execute('npm --version')

  console.log(result) // log NPM version
} catch(exp) {
  console.error(exp) // log the error
}

executeParallel(...commands: string[]): Promise<string[]>;

Asynchronously and in parallel executes the specified commands.

commands - Commands to execute, rest string parameters, e.g. executeParallel('command-one', 'command-two', 'command-three').

Will throw an error if any of the commands causes an error.
Returns the standard output of each command.

import { executeParallel } from '@igor.dvlpr/simple-exec'

try {
  const results: string[] = await executeParallel('npm --version', 'node --version', 'npm pack')
  console.log(results) // log the results which is a string array
} catch(exp) {
  console.error(exp) // log the error
}

executeParallel(commands: string[]): Promise<string[]>

Asynchronously and in parallel executes the specified commands.

commands - Commands to execute, a string array, e.g. executeParallel(['command-one', 'command-two', 'command-three']).

Will throw an error if any of the commands causes an error.
Returns the standard output of each command.

import { executeParallel } from '@igor.dvlpr/simple-exec'

try {
 const results: string[] = executeParallel(['npm --version', 'node --version', 'npm pack'])
  console.log(results) // log the results which is a string array
} catch(exp) {
  console.error(exp) // log the error
}

✨ Examples

example.ts

import { executeParallel } from '@igor.dvlpr/simple-exec'

const result: string[] = await executeParallel([
  'npm --version',
  'node --version',
  'npm --version'
]) // will log ['<npm version>', '<Node version>', '<npm version>']
  // e.g. [ '10.8.2', 'v22.5.1', '10.8.2' ]

📝 Changelog

📑 The changelog is available here: CHANGELOG.md.


🪪 License

Licensed under the MIT license which is available here, MIT license.


🧬 Related

@igor.dvlpr/mp3size

🧮 Calculates an estimated file size of Mp3 files. 🎶

@igor.dvlpr/windev

🍃 Provides ways of checking whether a path is a legacy Windows device. 💾

@igor.dvlpr/emojilyzer

💬 Emojifies strings, converting textual representations of emojis to graphical ones. 🖌️

@igor.dvlpr/astro-post-excerpt

⭐ An Astro component that renders post excerpts for your Astro blog - directly from your Markdown and MDX files. Astro v2+ collections are supported as well! 💎

@igor.dvlpr/scrollend-polyfill

🛴 A performant and light (< 1.5KB) JavaScript polyfill for the scrollend Event. ⛸️


👨🏻‍💻 Author

Created by Igor Dimitrijević (@igorskyflyer).