Skip to content

Commit ee3ca6f

Browse files
refactor(create-discord-bot): replace deps with built-in apis (#10971)
1 parent 024ae5c commit ee3ca6f

File tree

5 files changed

+25
-29
lines changed

5 files changed

+25
-29
lines changed

packages/create-discord-bot/bin/index.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
// eslint-disable-next-line n/shebang
44
import process from 'node:process';
5+
import { styleText } from 'node:util';
56
import { Option, program } from 'commander';
6-
import picocolors from 'picocolors';
77
import prompts from 'prompts';
88
import validateProjectName from 'validate-npm-package-name';
99
import packageJSON from '../package.json' assert { type: 'json' };
@@ -34,7 +34,7 @@ program
3434
.version(packageJSON.version)
3535
.description('Create a basic discord.js bot.')
3636
.argument('[directory]', 'What is the name of the directory you want to create this project in?')
37-
.usage(`${picocolors.green('<directory>')}`)
37+
.usage(`${styleText('green', '<directory>')}`)
3838
.action((directory) => {
3939
projectDirectory = directory;
4040
})
@@ -68,13 +68,16 @@ if (!projectDirectory) {
6868
const errors = [];
6969

7070
for (const error of [...(validationResult.errors ?? []), ...(validationResult.warnings ?? [])]) {
71-
errors.push(picocolors.red(`- ${error}`));
71+
errors.push(styleText('red', `- ${error}`));
7272
}
7373

74-
return picocolors.red(
75-
`Cannot create a project named ${picocolors.yellow(
74+
return styleText(
75+
'red',
76+
`Cannot create a project named ${styleText(
77+
'yellow',
7678
`"${directory}"`,
77-
)} due to npm naming restrictions.\n\nErrors:\n${errors.join('\n')}\n\n${picocolors.red(
79+
)} due to npm naming restrictions.\n\nErrors:\n${errors.join('\n')}\n\n${styleText(
80+
'red',
7881
'\nSee https://docs.npmjs.com/cli/configuring-npm/package-json for more details.',
7982
)}}`,
8083
);

packages/create-discord-bot/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@
5151
"funding": "https://github.com/discordjs/discord.js?sponsor",
5252
"dependencies": {
5353
"commander": "^13.1.0",
54-
"fast-glob": "^3.3.3",
55-
"picocolors": "^1.1.1",
5654
"prompts": "^2.4.2",
5755
"validate-npm-package-name": "^6.0.0"
5856
},

packages/create-discord-bot/src/create-discord-bot.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import type { ExecException } from 'node:child_process';
2-
import { cp, stat, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
2+
import { cp, glob, mkdir, stat, readdir, readFile, writeFile } from 'node:fs/promises';
33
import path from 'node:path';
44
import process from 'node:process';
55
import { URL } from 'node:url';
6-
import glob from 'fast-glob';
7-
import picocolors from 'picocolors';
6+
import { styleText } from 'node:util';
87
import type { PackageManager } from './helpers/packageManager.js';
98
import { install, isNodePackageManager } from './helpers/packageManager.js';
109
import { GUIDE_URL } from './util/constants.js';
@@ -35,15 +34,16 @@ export async function createDiscordBot({ directory, installPackages, typescript,
3534
// If the directory is actually a file or if it's not empty, throw an error.
3635
if (!directoryStats.isDirectory() || (await readdir(root)).length > 0) {
3736
console.error(
38-
picocolors.red(
39-
`The directory ${picocolors.yellow(`"${directoryName}"`)} is either not a directory or is not empty.`,
37+
styleText(
38+
'red',
39+
`The directory ${styleText('yellow', `"${directoryName}"`)} is either not a directory or is not empty.`,
4040
),
4141
);
42-
console.error(picocolors.red(`Please specify an empty directory.`));
42+
console.error(styleText('red', `Please specify an empty directory.`));
4343
process.exit(1);
4444
}
4545

46-
console.log(`Creating ${directoryName} in ${picocolors.green(root)}.`);
46+
console.log(`Creating ${directoryName} in ${styleText('green', root)}.`);
4747
const deno = packageManager === 'deno';
4848
await cp(new URL(`../template/${deno ? 'Deno' : typescript ? 'TypeScript' : 'JavaScript'}`, import.meta.url), root, {
4949
recursive: true,
@@ -80,8 +80,8 @@ export async function createDiscordBot({ directory, installPackages, typescript,
8080
});
8181
await writeFile('./.vscode/settings.json', newVSCodeSettings);
8282

83-
const globStream = glob.stream('./src/**/*.ts');
84-
for await (const file of globStream) {
83+
const globIterator = glob('./src/**/*.ts');
84+
for await (const file of globIterator) {
8585
const newData = await readFile(file, { encoding: 'utf8' }).then((str) =>
8686
str.replaceAll('[REPLACE_IMPORT_EXT]', typescript && !isNodePackageManager(packageManager) ? 'ts' : 'js'),
8787
);
@@ -109,15 +109,15 @@ export async function createDiscordBot({ directory, installPackages, typescript,
109109
console.log();
110110
const err = error as ExecException;
111111
if (err.signal === 'SIGINT') {
112-
console.log(picocolors.red('Installation aborted.'));
112+
console.log(styleText('red', 'Installation aborted.'));
113113
} else {
114-
console.error(picocolors.red('Installation failed.'));
114+
console.error(styleText('red', 'Installation failed.'));
115115
process.exit(1);
116116
}
117117
}
118118
}
119119

120120
console.log();
121-
console.log(picocolors.green('All done! Be sure to read through the discord.js guide for help on your journey.'));
122-
console.log(`Link: ${picocolors.cyan(GUIDE_URL)}`);
121+
console.log(styleText('green', 'All done! Be sure to read through the discord.js guide for help on your journey.'));
122+
console.log(`Link: ${styleText('cyan', GUIDE_URL)}`);
123123
}

packages/create-discord-bot/src/helpers/packageManager.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { execSync } from 'node:child_process';
22
import process from 'node:process';
3-
import picocolors from 'picocolors';
3+
import { styleText } from 'node:util';
44
import { DEFAULT_PACKAGE_MANAGER, NODE_PACKAGE_MANAGERS } from '../util/constants.js';
55

66
/**
@@ -36,7 +36,8 @@ export function resolvePackageManager(): PackageManager {
3636
}
3737

3838
console.error(
39-
picocolors.yellow(
39+
styleText(
40+
'yellow',
4041
`Detected an unsupported package manager (${npmConfigUserAgent}). Falling back to ${DEFAULT_PACKAGE_MANAGER}.`,
4142
),
4243
);

pnpm-lock.yaml

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)