Bare minimum spinner for CLI apps.
pnpm add picospin
Returns the current spinner string with applied color.
import { getSpinner } from 'picospin'
console.log(getSpinner()) // Returns colored spinner character
Customizes the spinner used for active tasks.
import { setSpinner } from 'picospin'
// Customize spinner with different frames and color
setSpinner({
frames: ['◐', '◓', '◑', '◒'],
interval: 100,
color: input => `\x1b[35m${input}\x1b[0m`, // Purple color
})
Enables or disables the spin interval. When enabled, the spinner will animate by cycling through its frames.
import { spin } from 'picospin'
// Start spinning
spin(true)
// Later, stop spinning
spin(false)
A Set of functions that are called when the spinner updates. You can add your own listeners to react to spinner updates.
import { spinListeners } from 'picospin'
// Add a listener to react to spinner updates
spinListeners.add(() => {
// Do something when spinner updates
console.clear()
console.log('Spinner updated!')
})
interface Spinner {
interval: number // Time in ms between frame updates
frames: string[] // Characters to cycle through
color: (input: string) => string // Function to apply color
}
A boolean that is true
when the process is running in an interactive terminal (TTY) and not in a CI environment.
import { isInteractive } from 'picospin'
if (isInteractive) {
// Show fancy spinner
} else {
// Use simpler output for non-interactive environments
}