'How create a react app with a specific version using the npx command?

I want to create a React app using the command

npx create-react-app my-app

But I want to make sure I can choose the React version. I want a version that can't use hooks, so I want to force a React version before 16.8 (in which hooks were released).

How or where do I find the version to use?
I have followed a tutorial that gave me a command like

npx create-react-app reactjs-app --scripts-version 1.1.5

How can I create an app with for example React version 16.7?

My goal is to get the latest version before which hooks were released.



Solution 1:[1]

According the documentation the syntax for npx is:

npx [options] <command>[@version] [command-arg]...

If you want react version 16.7 you have to find out which version of create-react-app installs react 16.7 because the version numbers are not the same. If I'm correct version 3.4.1 of create-react-app installs the latest version of react before they introduce hooks.

can simply run:

npx [email protected] my-app 

Solution 2:[2]

Some packages may use a different name for the package and the tool, causing some forms of the version specifier to fail when the plain command works:

$ npx uglifyjs --version
uglify-js 3.14.4

$ npx [email protected] --version
npm ERR! code ETARGET
npm ERR! notarget No matching version found for [email protected].
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
[..]
Install for [ '[email protected]' ] failed with code 1

In this case, using -p / --package, or specifying the package name instead, will allow npx to work as expected:

$ npx --package [email protected] uglifyjs --version
npx: installed 1 in 0.631s
uglify-js 3.10.0

$ npx [email protected] --version
npx: installed 1 in 0.524s
uglify-js 3.10.0
undefined

(nb: the first npx uglifyjs only works when inside a project that has had uglify-js added to the package.json file.)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Stefan van de Vooren
Solution 2 Robert K. Bell