Waits for specified urls or ports on localhost to be ready before running a supplied command.
- More reliable than sleep: Actually checks if services are responding
- Faster execution: Continues as soon as ready (no fixed wait)
- Better error handling: Fails fast if services don't start
- More professional: Industry-standard approach for service dependencies
Before:
./dev/up
sleep 5 # Hope services are ready
npm testAfter:
./dev/up readyator 5555,5556,3000,5558 "npm test"npm install readyatoryarn add readyator- Addresses (
portsorurls) must be separated by comma if you want to check for multiple services to be ready ( returning a successful HTTP status code). - Your
commandmust be surrounded by quotes so that it can be properly parsed. - The default check interval is 1s (1000ms) but can be changed.
Command:
readyator [ports] [command]Example:
readyator 8080,8081 "npm run start"If you're not looking to perform any specific actions but simply want to determine when the service is available, use this command:
readyator 8080,8081 "exit 0"Command:
readyator [urls] [command]Example:
readyator https://www.google.com/,http://localhost:8081/ "npm run start"Command:
readyator [urls] [command] [interval_in_millis]Example:
readyator https://www.google.com/ "npm run start" 5000Command:
readyator-docker [container_name] [interval_in_millis]Example:
readyator-docker my_docker_container 1000You can use readyator also through its Node.js API:
import readyator from 'readyator';
await readyator([8080, 8081], 'npm run start');It also supports executing a callback function:
import readyator from 'readyator';
const callback = () => {
console.log('System is online!');
};
readyator([8080, 8081], callback);Readyator's programmatic interface can also be used to listen for Docker containers to become healthy:
import {runWhenHealthy} from 'readyator';
await runWhenHealthy('my_docker_container');Here is how you can easily test the readyator from your development environment when checking out the code:
npm start https://www.google.com/ "npm run exit"