@@ -7,13 +7,14 @@ import { fileURLToPath } from 'url'
77const __dirname = dirname ( fileURLToPath ( import . meta. url ) )
88
99const paramOr = ( map , arg , def ) => map . get ( arg ) || def
10+ const valueOr = ( value , def ) => value || def
1011const makePath = ( ...p ) => Path . join ( ...p )
1112const ignoreContent =
1213 ( ...values ) =>
1314 source =>
1415 ! values . some ( x => source === x )
1516
16- const Ignores = [
17+ const FilesToIgnore = [
1718 '.git' ,
1819 '.idea' ,
1920 '.vscode' ,
@@ -38,13 +39,13 @@ const Ignores = [
3839 'CODE_OF_CONDUCT.md' ,
3940 'LICENSE' ,
4041 'README.md' ,
41- 'Makefile' ,
4242 'package.json' ,
4343 'package-lock.json' ,
4444 'yarn.lock' ,
45+ 'tsconfig.build.tsbuildinfo' ,
4546]
4647
47- const NoDeps = [ 'fs-extra' , 'standard-release' ]
48+ const DepsToIgnore = [ 'fs-extra' , '@types/ fs-extra', 'standard-release' ]
4849
4950const Templates = [
5051 { file : 'ci.yml' , copyTo : '.github/workflows/ci.yml' } ,
@@ -54,13 +55,13 @@ const Templates = [
5455 { file : '.dockerignore.root' , copyTo : '.dockerignore' } ,
5556]
5657
57- const PkgFieldsToKeep = [ 'scripts' , 'dependencies' , 'devDependencies' ]
58+ const PkgFieldsToKeep = [ 'type' , 'main' , 'types' , ' scripts', 'dependencies' , 'devDependencies' ]
5859
5960function main ( ) {
6061 console . log ( 'NodeJS Starter Kit - Bootstrapping New Project' )
6162
6263 const argv = process . argv . slice ( 2 )
63- const argMap = new Map ( )
64+ const args = new Map ( )
6465
6566 for ( let i = 0 ; i < argv . length ; i ++ ) {
6667 const arg = argv [ i ]
@@ -70,18 +71,18 @@ function main() {
7071 const key = match [ 1 ]
7172 const value = match [ 2 ]
7273
73- argMap . set ( key , value )
74+ args . set ( key , value )
7475 } else if ( / ^ - - .+ / . test ( arg ) ) {
7576 const key = arg . match ( / ^ - - ( .+ ) / ) [ 1 ]
7677 const next = argv [ i + 1 ]
7778
78- argMap . set ( key , next )
79+ args . set ( key , next )
7980 }
8081 }
8182
8283 const source = makePath ( __dirname , '../..' )
83- const dest = paramOr ( argMap , 'destination' , process . cwd ( ) ) . trim ( )
84- const app = paramOr ( argMap , 'app ' , 'my-app' ) . trim ( )
84+ const dest = valueOr ( argv [ 0 ] , process . cwd ( ) ) . trim ( )
85+ const app = paramOr ( args , 'name ' , 'my-app' ) . trim ( )
8586 const destination = makePath ( dest , app )
8687
8788 console . log (
@@ -94,7 +95,7 @@ App: ${app}
9495
9596 console . log ( 'Copying Project Files ...' )
9697
97- FsExt . copySync ( source , destination , { filter : ignoreContent ( ...Ignores . map ( x => makePath ( source , x ) ) ) } )
98+ FsExt . copySync ( source , destination , { filter : ignoreContent ( ...FilesToIgnore . map ( x => makePath ( source , x ) ) ) } )
9899
99100 console . log ( 'Copying Templates ...' )
100101
@@ -105,7 +106,6 @@ App: ${app}
105106 const pkg = FsExt . readJsonSync ( makePath ( source , 'package.json' ) )
106107 const newPkg = {
107108 name : app ,
108- main : 'dist/main.js' ,
109109 }
110110
111111 PkgFieldsToKeep . forEach ( field => {
@@ -114,7 +114,7 @@ App: ${app}
114114 }
115115 } )
116116
117- NoDeps . forEach ( dep => {
117+ DepsToIgnore . forEach ( dep => {
118118 if ( pkg . dependencies [ dep ] ) {
119119 delete pkg . dependencies [ dep ]
120120 }
0 commit comments