create-bot-ts 1.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of create-bot-ts might be problematic. Click here for more details.

package/.prettierrc ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": false,
4
+ "tabWidth": 4,
5
+ "printWidth": 80,
6
+ "useTabs": false,
7
+ "endOfLine": "lf"
8
+ }
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # create-bot-ts
2
+
3
+ This is a package that I use as some sort of starter template for Discord bots in typescript.
4
+
5
+ #### Its main features are
6
+
7
+ - Yarn Berry
8
+ - Git
9
+ - Typescript
10
+ - yarn version
11
+ - yarn upgrade-interactive
12
+ - husky
13
+ - list-staged
14
+ - eslit & prettier
15
+
16
+ After installation run:
17
+
18
+ ```sh
19
+ yarn create @eslint/config
20
+ ```
package/index.js ADDED
@@ -0,0 +1,287 @@
1
+ #!/usr/bin/env node
2
+ const cp = require("child_process");
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const outdent = require("outdent");
6
+ const { createSpinner } = require("nanospinner");
7
+
8
+ // Start the spinner
9
+ const spinner = createSpinner(
10
+ "Creating template! Do not exit the process..."
11
+ ).start({
12
+ color: "green",
13
+ });
14
+
15
+ const NS_PER_SEC = 1e9;
16
+ const MS_PER_NS = 1e-6;
17
+ const time = process.hrtime();
18
+
19
+ // Make the src and child directories
20
+ fs.mkdirSync(path.join(process.cwd(), "src"));
21
+ fs.mkdirSync(path.join(process.cwd(), "src", "client"));
22
+ fs.mkdirSync(path.join(process.cwd(), "src", "commands"));
23
+ fs.mkdirSync(path.join(process.cwd(), "src", "events"));
24
+ fs.mkdirSync(path.join(process.cwd(), "src", "utils"));
25
+ fs.mkdirSync(path.join(process.cwd(), "src", "interfaces"));
26
+ fs.mkdirSync(path.join(process.cwd(), "src", "models"));
27
+
28
+ // Make index.ts in src and client.ts
29
+ fs.writeFileSync(path.join(process.cwd(), "src", "index.ts"), "");
30
+ fs.writeFileSync(path.join(process.cwd(), "src", "client", "index.ts"), "");
31
+
32
+ // Declare function that writes files
33
+ const writeFiles = (files) => {
34
+ files.map((f) => {
35
+ fs.writeFileSync(
36
+ path.join(process.cwd(), f.path),
37
+ outdent`${f.content}`
38
+ );
39
+ });
40
+ };
41
+
42
+ // Use the declared function above here.
43
+ writeFiles([
44
+ {
45
+ path: "tsconfig.json",
46
+ content: `{
47
+ "compilerOptions": {
48
+ "lib": ["ESNext"],
49
+ "module": "commonjs",
50
+ "moduleResolution": "node",
51
+ "target": "ESNext",
52
+ "sourceMap": true,
53
+ "esModuleInterop": true,
54
+ "experimentalDecorators": true,
55
+ "emitDecoratorMetadata": true,
56
+ "allowSyntheticDefaultImports": true,
57
+ "skipLibCheck": true,
58
+ "skipDefaultLibCheck": true,
59
+ "declaration": true,
60
+ "resolveJsonModule": true
61
+ },
62
+ "include": ["src"]
63
+ }
64
+ `,
65
+ },
66
+ {
67
+ path: ".prettierrc",
68
+ content: `{
69
+ "semi": true,
70
+ "singleQuote": false,
71
+ "tabWidth": 4,
72
+ "printWidth": 80,
73
+ "useTabs": false,
74
+ "endOfLine": "lf"
75
+ }
76
+
77
+ `,
78
+ },
79
+ {
80
+ path: ".gitignore",
81
+ content: `# @see https://git-scm.com/docs/gitignore
82
+
83
+ # \`.DS_Store\` is a file that stores custom attributes of its containing folder
84
+ .DS_Store
85
+
86
+ # Logs
87
+ logs
88
+ *.log
89
+
90
+ # Dependencies
91
+ node_modules
92
+ bower_components
93
+ vendor
94
+
95
+ # yarn v2
96
+ .yarn/*
97
+ !.yarn/cache
98
+ !.yarn/patches
99
+ !.yarn/plugins
100
+ !.yarn/releases
101
+ !.yarn/sdks
102
+ !.yarn/versions
103
+
104
+ # Envs
105
+ .env
106
+
107
+ # Databases
108
+ *.db
109
+
110
+ # Caches
111
+ .cache
112
+ .npm
113
+ .eslintcache
114
+
115
+ # Temporaries
116
+ .tmp
117
+ .temp
118
+
119
+ # Built
120
+ dist
121
+ target
122
+ built
123
+ output
124
+ out
125
+
126
+ # Editor directories and files
127
+ .idea
128
+ .templates
129
+ template.config.js
130
+ *.suo
131
+ *.ntvs*
132
+ *.njsproj
133
+ *.sln
134
+ *.sw?
135
+
136
+ # Push Scripts
137
+ push.bat
138
+ push.sh
139
+
140
+ `,
141
+ },
142
+ ]);
143
+
144
+ spinner.update({
145
+ text: "Initializing npm package...",
146
+ });
147
+
148
+ // Initialize the npm package with -y to default to yes to all prompts
149
+ cp.exec("npm init -y", { cwd: process.cwd() }, () => {
150
+ spinner.update({
151
+ text: "Initializing Yarn Berry...",
152
+ color: "blue",
153
+ });
154
+ // Set yarn version to berry
155
+ cp.exec("yarn set version berry", { cwd: process.cwd() }, () => {
156
+ spinner.update({
157
+ text: "Adding git...",
158
+ color: "red",
159
+ });
160
+
161
+ // Synchronize git
162
+ cp.execSync("git init", { cwd: process.cwd() });
163
+
164
+ spinner.update({
165
+ text: "Installing yarn plugins...",
166
+ color: "blue",
167
+ });
168
+
169
+ // Install yarn plugins
170
+ cp.execSync("yarn plugin import version", { cwd: process.cwd() });
171
+ cp.execSync("yarn plugin import interactive-tools", {
172
+ cwd: process.cwd(),
173
+ });
174
+
175
+ cp.exec("yarn", { cwd: process.cwd() }, () => {
176
+ cp.exec(
177
+ "yarn add discord.js bufferutil erlpack zlib-sync utf-8-validate",
178
+ { cwd: process.cwd() },
179
+ () => {
180
+ spinner.update({
181
+ text: "Adding discord dependencies",
182
+ color: "blue",
183
+ });
184
+ cp.exec(
185
+ "yarn plugin import typescript",
186
+ { cwd: process.cwd() },
187
+ () => {
188
+ spinner.update({
189
+ text: "Adding necessary devDependencies",
190
+ color: "yellow",
191
+ });
192
+ cp.exec(
193
+ `yarn add --dev eslint eslint-config-airbnb-base eslint-config-prettier eslint-import-resolver-node eslint-plugin-import eslint-plugin-prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser husky lint-staged node-notifier prettier ts-node ts-node-dev`,
194
+ { cwd: process.cwd() },
195
+ () => {
196
+ spinner.update({
197
+ text: "Setting up husky...",
198
+ color: "cyan",
199
+ });
200
+ cp.execSync("yarn dlx husky-init --yarn2", {
201
+ cwd: process.cwd(),
202
+ });
203
+ spinner.update({
204
+ text: "Adding scripts...",
205
+ color: "magenta",
206
+ });
207
+ const package = JSON.parse(
208
+ fs.readFileSync(
209
+ path.join(
210
+ process.cwd(),
211
+ "package.json"
212
+ ),
213
+ { encoding: "utf-8" }
214
+ )
215
+ );
216
+ package.scripts = {
217
+ test: "yarn eslint",
218
+ prod: "ts-node --transpile-only ./src/index.ts",
219
+ dev: "ts-node-dev --respawn --transpile-only --notify --rs ./src/index.ts",
220
+ prettier: "prettier ./src/**/*.ts",
221
+ "prettier:fix":
222
+ "prettier --write ./src/**/*.ts",
223
+ eslint: "eslint ./src/**/*.ts",
224
+ "eslint:fix":
225
+ "eslint --fix ./src/**/*.ts",
226
+ };
227
+ package["lint-staged"] = {
228
+ "./src/**/*.ts": ["eslint --fix"],
229
+ };
230
+
231
+ fs.writeFileSync(
232
+ path.join(
233
+ process.cwd(),
234
+ "package.json"
235
+ ),
236
+ JSON.stringify(package, null, 4)
237
+ );
238
+
239
+ spinner.update({
240
+ text: "Generating README.md...",
241
+ color: "magenta",
242
+ });
243
+
244
+ fs.writeFileSync(
245
+ path.join(process.cwd(), "README.md"),
246
+ outdent`
247
+ # ${package.name}
248
+
249
+ Created with created with [create-bot-ts](https://github.com/MahoMuri/create-bot-ts)
250
+
251
+ Based from [create-ts-pro](https://github.com/Milo123456789/create-ts-pro)
252
+
253
+ Features:
254
+ - Yarn PnP
255
+ - Husky
256
+ - ESlint and prettier
257
+ - TypeScript
258
+ - Version Plugin
259
+ - Upgrade-interactive plugin
260
+
261
+ Next Steps, run:
262
+ \`\`\`sh
263
+ yarn create @eslint/config
264
+ \`\`\`
265
+
266
+ to fully initialize eslint.
267
+ `
268
+ );
269
+ const diff = process.hrtime(time);
270
+ const seconds =
271
+ (diff[0] * NS_PER_SEC +
272
+ diff[1] * MS_PER_NS) /
273
+ NS_PER_SEC;
274
+ spinner.success({
275
+ text: `Sucessfully Generated ${
276
+ package.name
277
+ } template in ${seconds.toFixed(3)}s`,
278
+ });
279
+ }
280
+ );
281
+ }
282
+ );
283
+ }
284
+ );
285
+ });
286
+ });
287
+ });
package/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "create-bot-ts",
3
+ "version": "1.0.3",
4
+ "description": "\"MahoMuri's personal template for Discord Bots\"",
5
+ "main": "index.js",
6
+ "author": "MahoMuri",
7
+ "license": "MIT",
8
+ "bin": "index.js",
9
+ "private": false,
10
+ "dependencies": {
11
+ "nanospinner": "^1.0.0",
12
+ "outdent": "^0.8.0"
13
+ }
14
+ }