Introduction to npm-run-script
npm-run-script is a powerful feature of npm that allows developers to run custom scripts defined in the package.json file. This enables a wide range of automation possibilities in Node.js-based projects. In this guide, we will explore various APIs of npm-run-script with practical code snippets and provide an example application to demonstrate its usage.
Basic Usage
To define a script in the package.json file, add a “scripts” section with the desired command:
{ "scripts": { "start": "node app.js", "test": "mocha" } }
With these definitions, you can run the scripts using npm:
npm start npm test
Dozens of Useful APIs
Here are some useful npm-run-script APIs with examples:
Pre and Post Hooks
You can define pre and post hooks for any script:
{ "scripts": { "prestart": "echo 'Preparing to start...'", "start": "node app.js", "poststart": "echo 'Server has started.'" } }
Running Multiple Scripts
Use the ‘&&’ operator to run multiple scripts sequentially:
{ "scripts": { "lint": "eslint .", "test": "mocha", "ci": "npm run lint && npm run test" } }
Environment Variables
Set environment variables within scripts:
{ "scripts": { "start": "NODE_ENV=production node app.js" } }
Using npm-run-all
Install npm-run-all to run scripts concurrently or sequentially:
npm install npm-run-all --save-dev
Then define scripts to use npm-run-all:
{ "scripts": { "clean": "rimraf dist", "build": "webpack", "start": "node server.js", "dev": "npm-run-all clean build start" } }
Example Application
Let’s create a small application to demonstrate the usage of npm-run-script APIs. We will set up a Node.js server with scripts for cleaning, building, and starting the server.
{ "name": "example-app", "version": "1.0.0", "scripts": { "clean": "rimraf dist", "build": "webpack", "start": "node server.js", "dev": "npm-run-all clean build start" }, "devDependencies": { "rimraf": "^3.0.2", "webpack": "^5.36.2", "npm-run-all": "^4.1.5" } }
Here’s a basic server.js file:
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/', (req, res) => { res.send('Hello World'); }); app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
With this setup, you can easily manage your development workflow with npm-run-script. Run the whole development setup with a single command:
npm run dev
Enjoy automating your Node.js project’s tasks efficiently!
Hash: 1414c2d93afe61f056cf9d7ac1165801f0a6f07c479caf40c223149c7be4ff4e