NPM
-
Manages
packages
but
doesn't make life easy
executing
any.
NPX
- A tool for
executing
Node packages.
NPX
comes bundled with
NPM
version
5.2+
NPM
by itself does not simply run any package. It doesn't run any package as a matter of fact. If you want to run a package using NPM, you must specify that package in your
package.json
file.
When executables are installed via NPM packages, NPM links to them:
local
installs have "links" created at
./node_modules/.bin/
directory.
global
installs have "links" created from the global
bin/
directory (e.g.
/usr/local/bin
) on Linux or at
%AppData%/npm
on Windows.
Documentation you should read
One might install a package locally on a certain project:
Now let's say you want NodeJS to execute that package from the command line:
The above will
fail
. Only
globally installed
packages can be executed by typing their name
only
.
To fix this, and have it run, you must type the local path:
$ ./node_modules/.bin/some-package
You can technically run a locally installed package by editing your
packages.json
file and adding that package in the
scripts
section:
{
"name": "whatever",
"version": "1.0.0",
"scripts": {
"some-package": "some-package"
Then run the script using npm run-script
(or npm run
):
npx
will check whether <command>
exists in $PATH
, or in the local project binaries, and execute it. So, for the above example, if you wish to execute the locally-installed package some-package
all you need to do is type:
Another major advantage of npx
is the ability to execute a package which wasn't previously installed:
$ npx create-react-app my-app
The above example will generate a react
app boilerplate within the path the command had run in, and ensures that you always use the latest version of a generator or build tool without having to upgrade each time you’re about to use it.
Use-Case Example:
npx
command may be helpful in the script
section of a package.json
file, when it is unwanted to define a dependency which might not be commonly used or any other reason:
2024年2月20日 00:25 回复