npm i @nowa/module-script



Module Config

export type SingleScript = string | (() => void | Promise<void>);
export interface IOptions {
  // all default false
  parallel?: boolean;
  noWait?: boolean;
  noRetrigger?: boolean;
export type Config = ['script', SingleScript | SingleScript[], IOptions];


const config1 = ['script', 'echo start'];
const config2 = ['script', ['rm -rf dist', 'mkdir dist']]; // multiple scripts
const config3 = ['script', ['rm -rf dist', 'rm -rf build'], { parallel: true }]; // with options
// no guarantee on script running orders , but less time-consuming probably

// be careful, shell scripts are not cross-platform
// you'd better perform file system operations with @nowa/module-file

const config4 = [
  () => {
    // js script

noWait noRetrigger

consider this workflow

  1. script start: [echo start, <some time-consuming script>]
  2. webpack watch
  3. script end: [echo end]

the first-run output should be something like

  1. 'start'
  2. <running time-consuming script>
  3. <webpack related output>
  4. 'end'

and when you trigger a recompile (change source file), these are append to the output

  1. <webpack recompile output>
  2. 'end'

noWait: true

with noWait option on start script, the first output should be

  1. 'start' + <running time-consuming script> + <webpack output>
  2. 'end'

the next module module-webpack won't wait for the script to finish

noRetrigger: true

with noRetrigger option on end script the recompile output should be

  1. <webpack recompile output>

no 'end' output since it won't retrigger

Jump To