nova-commandkit
v1.0.2
Published
Beginner friendly command & event handler for Discord.js — a Node.js 24+ compatible fork of CommandKit.
Maintainers
Readme
Nova CommandKit
Beginner friendly command & event handler for Discord.js — Node.js 24+ ready.
What is this? Nova CommandKit is a Node.js 24+ compatible fork of CommandKit by Under Ctrl. The original library targeted Node.js 20 and broke on newer runtimes because it used the removed
assertimport option. Nova CommandKit modernizes the toolchain and fixes those incompatibilities so it runs cleanly on Node.js 22, 24, and beyond. All credit for the original design goes to the CommandKit authors — this fork is published under the same MIT license.
Features
- Beginner friendly 🚀
- Slash + context menu commands support ✅
- Multiple dev guilds, users, & roles support 🤝
- Automatic command updates 🤖
- REST registration behaviour 📍
- Easy command line interface 🖥️
- Node.js 24+ support 🟢 (import attributes, stabilized watch mode, modern toolchain)
Requirements
- Node.js
>= 20.10.0(Node.js 22 LTS or 24 recommended) - discord.js
^14
Installation
This package is published to the public npm registry — anyone can install it with no authentication or special setup.
npm install nova-commandkit discord.jsYarn:
yarn add nova-commandkit discord.jspnpm:
pnpm add nova-commandkit discord.jsInstall development version
npm install nova-commandkit@dev⚠️ The development version is likely to have bugs.
Alternative: install from source
npm install github:tombabu472-star/nova-commandkitUsage
This is a simple overview of how to set up this library with all the options.
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const { CommandKit } = require('nova-commandkit');
const path = require('path');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
new CommandKit({
// Your discord.js client object
client,
// Path to the commands folder
commandsPath: path.join(__dirname, 'commands'),
// Path to the events folder
eventsPath: path.join(__dirname, 'events'),
// Path to the validations folder (only valid if "commandsPath" was provided)
validationsPath: path.join(__dirname, 'validations'),
// Array of development server IDs (used to register and run devOnly commands)
devGuildIds: ['1234567890', '0987654321'],
// Array of developer user IDs (used for devOnly commands)
devUserIds: ['1234567890', '0987654321'],
// Array of developer role IDs (used for devOnly commands)
devRoleIds: ['1234567890', '0987654321'],
// Disable CommandKit's built-in validations
skipBuiltInValidations: true,
// Update command registration/reload behaviour to register all commands at once
bulkRegister: true,
});
client.login('YOUR_TOKEN_HERE');Using the NovaCommandKit alias
NovaCommandKit is the primary class name for this fork. CommandKit is kept as
a backward-compatible alias, so both of these work:
const { CommandKit } = require('nova-commandkit');
const { NovaCommandKit } = require('nova-commandkit');Command Line Interface
Nova CommandKit ships with a CLI for development, building, and production:
# Start your bot in development mode (with watch + hot reload)
nova-commandkit dev
# Build your project for production
nova-commandkit build
# Start your bot in production mode (after building)
nova-commandkit startA short nova alias is also installed alongside nova-commandkit.
Configuration
Create a commandkit.json (or commandkit.js / .mjs / .cjs) file in your
project root:
{
"src": "src",
"main": "index.mjs",
"watch": true,
"outDir": "dist",
"minify": false,
"sourcemap": false,
"antiCrash": true,
"requirePolyfill": true,
"envExtra": true,
"clearRestartLogs": true,
"nodeOptions": []
}What changed vs. the original CommandKit?
This fork focuses on Node.js 24+ compatibility. Key changes:
| Area | Original (CommandKit 0.1.10) | Nova CommandKit |
| --- | --- | --- |
| Config loading | import(path, { assert: { type: 'json' } }) ❌ removed in Node 22+ | import(path, { with: { type: 'json' } }) ✅ import attributes |
| File URL resolution | manual string concatenation | node:url pathToFileURL (robust on all platforms) |
| @types/node | ^20 | ^22 |
| tsup | ^7 | ^8 |
| tsx | ^3 | ^4 |
| commander | ^11 | ^12 |
| rimraf | ^5 | ^6 |
| ora | ^7 | ^8 |
| TypeScript | ^5.1 | ^5.6 |
| engines.node | (none) | >= 20.10.0 |
| Class export | CommandKit | CommandKit + NovaCommandKit alias |
See the CHANGELOG for the full list.
License
MIT — see LICENSE.
Nova CommandKit is derived from CommandKit © 2023 Under Ctrl, used under the MIT license.
