@@ -5,6 +5,7 @@ import { parseArgs } from "node:util";
5
5
import { cancel , isCancel , text } from "@clack/prompts" ;
6
6
import chalk from "chalk" ;
7
7
import { promises as fs } from "fs" ;
8
+ import npmUser from "npm-user" ;
8
9
import { Octokit } from "octokit" ;
9
10
import prettier from "prettier" ;
10
11
import replace from "replace-in-file" ;
@@ -147,13 +148,45 @@ try {
147
148
)
148
149
) ;
149
150
151
+ async function getNpmAuthor ( ) {
152
+ let username ;
153
+
154
+ try {
155
+ username = await $ `npm whoami` ;
156
+ } catch {
157
+ console . log (
158
+ chalk . gray ( "Could not populate npm user. Failed to run npm whoami. " )
159
+ ) ;
160
+ return owner ;
161
+ }
162
+
163
+ let npmUserInfo ;
164
+
165
+ try {
166
+ npmUserInfo = await npmUser ( username . stdout . trim ( ) ) ;
167
+ } catch {
168
+ console . log (
169
+ chalk . gray (
170
+ "Could not populate npm user. Failed to retrieve user info from npm. "
171
+ )
172
+ ) ;
173
+ return owner ;
174
+ }
175
+
176
+ const { name = owner , email } = npmUserInfo ;
177
+ return email ? `${ name } <${ email } >` : name ;
178
+ }
179
+
180
+ const npmAuthor = await getNpmAuthor ( ) ;
181
+
150
182
for ( const [ from , to , files = [ "./.github/**/*" , "./*.*" ] ] of [
151
183
[ new RegExp ( existingPackage . description , "g" ) , description ] ,
152
184
[ / T e m p l a t e T y p e S c r i p t N o d e P a c k a g e / g, title ] ,
153
185
[ / J o s h u a K G o l d b e r g / g, owner ] ,
154
186
[ / t e m p l a t e - t y p e s c r i p t - n o d e - p a c k a g e / g, repository ] ,
155
187
[ / " s e t u p " : " .* " , / g, `` , "./package.json" ] ,
156
188
[ / " s e t u p : t e s t " : " .* " , / g, `` , "./package.json" ] ,
189
+ [ / " a u t h o r " : " .+ " / g, `"author": "${ npmAuthor } "` , "./package.json" ] ,
157
190
[
158
191
new RegExp ( `"version": "${ existingPackage . version } "` , "g" ) ,
159
192
`"version": "0.0.0"` ,
@@ -328,7 +361,14 @@ try {
328
361
console . log (
329
362
chalk . gray `Removing devDependency packages only used for setup...`
330
363
) ;
331
- await $ `pnpm remove @clack/prompts all-contributors-cli chalk octokit replace-in-file -D` ;
364
+
365
+ try {
366
+ await $ `pnpm remove @clack/prompts all-contributors-cli chalk octokit npm-user replace-in-file title-case -D` ;
367
+ } catch ( error ) {
368
+ console . log ( "Error uninstalling packages:" , error ) ;
369
+ caughtError = error ;
370
+ }
371
+
332
372
console . log ( chalk . gray `✔️ Done.` ) ;
333
373
}
334
374
0 commit comments