如何运行node_modules目录中已安装的package中的可执行文件
当你使用npm安装一个package时,会在当前目录的node_modules目录中生成一个对应的package目录,其中包含了该package所有的文件。如果你想运行这个package目录里的文件,通常的做法是切换到这个目录下,然后执行对应的文件。
例如你在项目中安装了karma依赖项,如果想直接运行karma命令,需要先切换到目录/node_modules/karma/bin,然后运行:
karma start --fast=true
且不说这样做很麻烦,而且当前命令执行时的上下文参数也可能会有问题。例如上面命令执行时可能无法正常加载根目录下的karma.conf.js配置项。
有两种解决办法!
一是全局安装该package对应的cli,然后直接在命令行中运行。例如:
npm install -g karma-cli
另一种办法是借助于npm中的npx命令,例如:
npx karma start --singleRun --coverage=true --fast=true
npm从5.2版本开始都自带npx,使得运行node_modules目录中的package命令更加方便。当你运行npx <package name>时,npx会自动查找node_modules目录中对应的package位置,并从中找到可以执行的文件。
有关npx的详细使用方法可以参考这里的一篇文章:http://www.ruanyifeng.com/blog/2019/02/npx.html