mirror of
				https://github.com/aleleba/create-react-ssr.git
				synced 2025-10-30 21:51:01 -06:00 
			
		
		
		
	PR-767513: fix npx.
This commit is contained in:
		
							
								
								
									
										122
									
								
								bin/cli.js
									
									
									
									
									
								
							
							
						
						
									
										122
									
								
								bin/cli.js
									
									
									
									
									
								
							| @@ -24,13 +24,13 @@ const runCommandWithOutput = command => { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| const replaceTextOnFile = async ({ | const replaceTextOnFile = ({ | ||||||
|     file, |     file, | ||||||
|     textToBeReplaced, |     textToBeReplaced, | ||||||
|     textReplace, |     textReplace, | ||||||
|     arrOfObjectsBeReplaced |     arrOfObjectsBeReplaced | ||||||
| }) => { | }) => { | ||||||
|     await fs.readFile(file, 'utf8', function (err,data) { |     fs.readFile(file, 'utf8', function (err,data) { | ||||||
|         let result |         let result | ||||||
|         if (err) { |         if (err) { | ||||||
|           return console.error(err); |           return console.error(err); | ||||||
| @@ -47,7 +47,7 @@ const replaceTextOnFile = async ({ | |||||||
|             result = data.replace(textToBeReplaced, textReplace).replace(/^\s*[\r\n]/gm, ' '); |             result = data.replace(textToBeReplaced, textReplace).replace(/^\s*[\r\n]/gm, ' '); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         fs.writeFileSync(file, result, 'utf8', function (err) { |         fs.writeFile(file, result, 'utf8', function (err) { | ||||||
|             if (err){ |             if (err){ | ||||||
|                 return console.error(err); |                 return console.error(err); | ||||||
|             } |             } | ||||||
| @@ -55,70 +55,72 @@ const replaceTextOnFile = async ({ | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  |  | ||||||
| const repoName = process.argv[2]; | (async () => { | ||||||
| const gitCheckoutCommand = `git clone --depth 1 https://github.com/aleleba/create-react-ssr ${repoName}`; |     const repoName = process.argv[2]; | ||||||
| console.log(`Cloning the repository with name ${repoName}`); |     const gitCheckoutCommand = `git clone --depth 1 https://github.com/aleleba/create-react-ssr ${repoName}`; | ||||||
| const checkedOut = runCommand(gitCheckoutCommand); |     console.log(`Cloning the repository with name ${repoName}`); | ||||||
| if(!checkedOut) process.exit(-1); |     const checkedOut = runCommand(gitCheckoutCommand); | ||||||
|  |     if(!checkedOut) process.exit(-1); | ||||||
|      |      | ||||||
| const actualVersion = runCommandWithOutput(`cd ${repoName} && node -p "require('./package.json').version"`).toString().trim() |     const actualVersion = runCommandWithOutput(`cd ${repoName} && node -p "require('./package.json').version"`).toString().trim() | ||||||
|      |      | ||||||
| const installDepsCommand = `cd ${repoName} && npm install`; |     const installDepsCommand = `cd ${repoName} && npm install`; | ||||||
| const cleanGitHistoryCommand = `cd ${repoName} && rm -rf .git && git init && git add --all -- ":!.github" ":!bin" && git commit -m "Initial commit"` |     const cleanGitHistoryCommand = `cd ${repoName} && rm -rf .git && git init && git add --all -- ":!.github" ":!bin" && git commit -m "Initial commit"` | ||||||
| const cleanGitHistoryCommandWindows = `cd ${repoName} && rmdir .git /s /q && git init && git add --all -- ":!.github" ":!bin" && git commit -m "Initial commit"` |     const cleanGitHistoryCommandWindows = `cd ${repoName} && rmdir .git /s /q && git init && git add --all -- ":!.github" ":!bin" && git commit -m "Initial commit"` | ||||||
| const deleteFoldersCommand = `cd ${repoName} && rm -rf .github && rm -rf bin` |     const deleteFoldersCommand = `cd ${repoName} && rm -rf .github && rm -rf bin` | ||||||
| const deleteFoldersCommandWindows = `cd ${repoName} && rmdir .github /s /q && rmdir bin /s /q` |     const deleteFoldersCommandWindows = `cd ${repoName} && rmdir .github /s /q && rmdir bin /s /q` | ||||||
| const deleteBinCommand = `cd ${repoName} && sed -i 's+"bin": "./bin/cli.js",++g' package.json && sed -i '/^[[:space:]]*$/d' package.json` |     const deleteBinCommand = `cd ${repoName} && sed -i 's+"bin": "./bin/cli.js",++g' package.json && sed -i '/^[[:space:]]*$/d' package.json` | ||||||
| const deleteBinCommandWindows = `cd ${repoName} && copy package.json package2.json && del package.json && type package2.json | findstr /v cli.js > package.json && del package2.json` |     const deleteBinCommandWindows = `cd ${repoName} && copy package.json package2.json && del package.json && type package2.json | findstr /v cli.js > package.json && del package2.json` | ||||||
| const deleteBinCommandApple = `cd ${repoName} && sed -i .copy 's+"bin": "./bin/cli.js",++g' package.json && sed -i .copy '/^[[:space:]]*$/d' package.json && |     const deleteBinCommandApple = `cd ${repoName} && sed -i .copy 's+"bin": "./bin/cli.js",++g' package.json && sed -i .copy '/^[[:space:]]*$/d' package.json && | ||||||
| rm -rf package.json.copy` |     rm -rf package.json.copy` | ||||||
| const replaceNewVersionCommand = `cd ${repoName} && sed -i 's+"version": "${actualVersion}",+"version": "0.0.1",+g' package.json` |     const replaceNewVersionCommand = `cd ${repoName} && sed -i 's+"version": "${actualVersion}",+"version": "0.0.1",+g' package.json` | ||||||
| const replaceNewVersionCommandWindows = `cd ${repoName} && copy package.json package2.json && del package.json && type package2.json | %"version": "${actualVersion}",="version": "0.0.1"% > package.json && del package2.json` |     const replaceNewVersionCommandWindows = `cd ${repoName} && copy package.json package2.json && del package.json && type package2.json | %"version": "${actualVersion}",="version": "0.0.1"% > package.json && del package2.json` | ||||||
| const replaceNewVersionCommandApple = `cd ${repoName} && sed -i .copy 's+"version": "${actualVersion}",+"version": "0.0.1",+g' package.json && |     const replaceNewVersionCommandApple = `cd ${repoName} && sed -i .copy 's+"version": "${actualVersion}",+"version": "0.0.1",+g' package.json && | ||||||
| rm -rf package.json.copy` |     rm -rf package.json.copy` | ||||||
| const replaceNameAppCommand = `cd ${repoName} && sed -i 's+"name": "@aleleba/create-react-ssr",+"name": "${repoName}",+g' package.json` |     const replaceNameAppCommand = `cd ${repoName} && sed -i 's+"name": "@aleleba/create-react-ssr",+"name": "${repoName}",+g' package.json` | ||||||
| const replaceNameAppCommandApple = `cd ${repoName} && sed -i .copy 's+"name": "@aleleba/create-react-ssr",+"name": "${repoName}",+g' package.json && |     const replaceNameAppCommandApple = `cd ${repoName} && sed -i .copy 's+"name": "@aleleba/create-react-ssr",+"name": "${repoName}",+g' package.json && | ||||||
| rm -rf package.json.copy` |     rm -rf package.json.copy` | ||||||
|      |      | ||||||
| console.log(`Installing dependencies for ${repoName}`); |     console.log(`Installing dependencies for ${repoName}`); | ||||||
| const installedDeps = runCommand(installDepsCommand); |     const installedDeps = runCommand(installDepsCommand); | ||||||
| if(!installedDeps) process.exit(-1); |     if(!installedDeps) process.exit(-1); | ||||||
|      |      | ||||||
| replaceTextOnFile({  |     await replaceTextOnFile({  | ||||||
|     file: `./${repoName}/package.json`, |         file: `./${repoName}/package.json`, | ||||||
|     arrOfObjectsBeReplaced: [ |         arrOfObjectsBeReplaced: [ | ||||||
|         { |             { | ||||||
|             textToBeReplaced: `"bin": "./bin/cli.js",`,  |                 textToBeReplaced: `"bin": "./bin/cli.js",`,  | ||||||
|             textReplace: `` |                 textReplace: `` | ||||||
|         }, |             }, | ||||||
|         { |             { | ||||||
|             textToBeReplaced: `"version": "${actualVersion}",`,  |                 textToBeReplaced: `"version": "${actualVersion}",`,  | ||||||
|             textReplace: `"version": "0.0.1",` |                 textReplace: `"version": "0.0.1",` | ||||||
|         }, |             }, | ||||||
|         { |             { | ||||||
|             textToBeReplaced: `"name": "@aleleba/create-react-ssr",`,  |                 textToBeReplaced: `"name": "@aleleba/create-react-ssr",`,  | ||||||
|             textReplace: `"name": "${repoName}",` |                 textReplace: `"name": "${repoName}",` | ||||||
|         } |             } | ||||||
|     ] |         ] | ||||||
| }) |     }) | ||||||
|      |      | ||||||
| /* const deleteBin = isAppple ? runCommand(deleteBinCommandApple) : (isWin ? runCommand(deleteBinCommandWindows) : runCommand(deleteBinCommand)); |     /* const deleteBin = isAppple ? runCommand(deleteBinCommandApple) : (isWin ? runCommand(deleteBinCommandWindows) : runCommand(deleteBinCommand)); | ||||||
| if(!deleteBin) process.exit(-1); |     if(!deleteBin) process.exit(-1); | ||||||
|      |      | ||||||
| const replaceNewVersion = runCommand(replaceNewVersionCommand) |     const replaceNewVersion = runCommand(replaceNewVersionCommand) | ||||||
| if(!replaceNewVersion) process.exit(-1); |     if(!replaceNewVersion) process.exit(-1); | ||||||
|      |      | ||||||
| const replaceNameApp = runCommand(replaceNameAppCommand) |     const replaceNameApp = runCommand(replaceNameAppCommand) | ||||||
| if(!replaceNameApp) process.exit(-1); */ |     if(!replaceNameApp) process.exit(-1); */ | ||||||
|      |      | ||||||
| console.log(`Cleaning History of Git for ${repoName}`); |     console.log(`Cleaning History of Git for ${repoName}`); | ||||||
| const cleanGitHistory = isWin ? runCommand(cleanGitHistoryCommandWindows) : runCommand(cleanGitHistoryCommand); |     const cleanGitHistory = isWin ? runCommand(cleanGitHistoryCommandWindows) : runCommand(cleanGitHistoryCommand); | ||||||
| if(!cleanGitHistory) process.exit(-1); |     if(!cleanGitHistory) process.exit(-1); | ||||||
|      |      | ||||||
| console.log("Congratulations! You are ready. Follow the following commands to start"); |     console.log("Congratulations! You are ready. Follow the following commands to start"); | ||||||
| console.log(`cd ${repoName}`); |     console.log(`cd ${repoName}`); | ||||||
| console.log('Create a .env file with ENV=development(defauld: production), PORT=3000 (default: 80), PUBLIC_URL=your_public_url(optional)(default: /)'); |     console.log('Create a .env file with ENV=development(defauld: production), PORT=3000 (default: 80), PUBLIC_URL=your_public_url(optional)(default: /)'); | ||||||
| console.log(`Then you can run: npm start:dev`); |     console.log(`Then you can run: npm start:dev`); | ||||||
|      |      | ||||||
| const deleteFolders = isWin ? runCommand(deleteFoldersCommandWindows) : runCommand(deleteFoldersCommand); |     const deleteFolders = isWin ? runCommand(deleteFoldersCommandWindows) : runCommand(deleteFoldersCommand); | ||||||
| if(!deleteFolders) process.exit(-1); |     if(!deleteFolders) process.exit(-1); | ||||||
|  | })(); | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@aleleba/create-react-ssr", |   "name": "@aleleba/create-react-ssr", | ||||||
|   "version": "3.0.44", |   "version": "3.0.45", | ||||||
|   "description": "Starter Kit of server side render of react", |   "description": "Starter Kit of server side render of react", | ||||||
|   "bin": "./bin/cli.js",   |   "bin": "./bin/cli.js",   | ||||||
|   "main": "src/server/index", |   "main": "src/server/index", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user