Historically, the npm init command was solely use to create a new package.json file. However, as of npm version 6.1, you can now use a new feature of npm init called the . The initializer you provide will determine how your new application will be built. npm will prepend create- to the name of the initializer and it'll use npx to temporarily install and execute that project.
npx create-react-app playground
What it does is install 'create-react-app' temporality, and use it to init a new react application called 'playground'.
For npm v6.1 above, you can use 'npm init' to create a new application.
npm init <initializer>can be used to set up a new or existing npm package.
initializerin this case is an npm package namedcreate-<initializer>, which will be installed bynpx, and then have its main bin executed -- presumably creating or updatingpackage.jsonand running any other initialization-related operations. Link
Which means if you do:
npm init react-app playground
equals to:
npx create-react-app playground