fastify-console v1.1.1
fastify-console
Command line tool to debug fastify app and execute app methods directly.

Install
npm i fastify-console -sSetup
To use the package you have to intergrate with your server.js file in your project.
const Fastify = require('fastify');
const fp = require('fastify-plugin');
const FastifyConsole = require('fastify-console');
// Instantiate Fastify with some config
const app = Fastify({ logger: true, pluginTimeout: 3000 });
const App = require('./app');
// Register your application as a normal plugin.
app.register(fp(App), {});
if (FastifyConsole.active()) {
app.ready((error) => {
if (error) {
// eslint-disable-next-line no-console
console.error(error);
return false;
}
return FastifyConsole.start(app, {
prompt: 'fastify > ',
});
});
} else if (require.main === module) {
// Start listening.
app.listen(process.env.PORT || 3000, '0.0.0.0', (err) => {
if (err) {
app.log.error(err);
process.exit(1);
}
});
}use below command to run console
node server.js --consolefor ease of use you can update your package.json as below and then run npm run console
"scripts": {
"console": "node server.js --console",
}Configurations
| Option | Type | Defaults | Descriptions |
|---|---|---|---|
| quiet | Boolean | false | Displays help descriptions when console get started |
| prompt | String | fastify > | The input prompt to display. |
| useGlobal | Boolean | true | Default evaluation function will use the JavaScript global |
| ignoreUndefined | Boolean | true | Writer will not output the return value of a command if it evaluates to undefined |
| historyPath | String | '' | The path to a file to persist command history. eg: .data/history.log |
Note: 1. History feature will work only for on and above Node 12 version. 2. For more details about config please check NodeJS Repl
Examples
app handle provide the fastify instance which is being used in application.
1. Provide accessibility to all plugin by assigned decorator
for example if we registerd timestamp decorator as below
module.exports = fp(async (fastify, opts) => {
fastify.decorate('timestamp', () => Date.now());
});then we can execute it directly from console by using app.timestamp()
- Provide accessibility to
routesof application
app.inject({ url: '/home', methods: 'GET', headers: {access_token: 'my-secret-token'} })- Provide accessibility to registered
modelsfrommongoose
class StoryClass {
// `getFullTitle()` becomes a document method
getFullTitle() {
return this.title;
}
}
module.exports = {
name: 'Story',
alias: 'Story',
schema: {
title: {
type: String,
required: true,
},
},
class: StoryClass,
}; Story.findOne().then(story => story.getFullTitle())Note: fastify-console uses fastify-mongoose-driver plugin to access models in console.
or you can use mongoose decorator for mongo connections.
please check mongoose for better understanding about schema definations.
Inspired By
License
fastify-console uses the MIT license. See LICENSE for more details.