我无法直接执行未全局安装的npm软件包。但是我可以通过npm scripts
执行它。如何解决?
例如:
我在项目下安装了gulp
:
npm install gulp --save-dev
然后我尝试通过
执行它gulp
zsh: command not found: gulp
但是如果我将npm script
添加到package.json
:
"scripts": {
"test": "mocha --require intelli-espower-loader && gulp test",
"start": "gulp"
},
然后运行
npm start
它可以顺利执行。
P.S。
与mocha
软件包相同的问题,我不能直接执行mocha
,但可以毫无问题地执行npm test
。
该如何解决该问题?
我并不是说要全局执行它们,我只是想在项目下执行它们。
我不知道哪里出了问题,但是它们不久前就可以执行,只是最近不起作用!
答案 0 :(得分:2)
除了@Ion的答案:您可能需要将路径添加到环境变量。在Windows OS中,它将为%AppData%\npm
。对于本地安装的软件包,您应该能够像
.\node_modules\.bin\gulp
答案 1 :(得分:1)
如果要全局执行它们,请使用-g
标志进行安装
npm install gulp -g
要直接运行,您还可以执行./node_modules/.bin/gulp
答案 2 :(得分:0)
这是因为未全局安装的软件包未在根node_modules文件夹中创建引用。如果要专门使用本地安装的版本在终端上全局运行,请转到环境变量并将路径设置为./node_modules/gulp/bin/gulp.js
,或者将npm配置为使用上述位置作为gulp并执行{{1} }
答案 3 :(得分:0)
您有两种选择:
全局安装可执行模块:
npm install -g gulp
如果这是您经常使用的工具(对于许多不同的项目),则很好。具体来说,对于gulp
,全局安装的gulp还将检查项目是否已安装自己的gulp
(在node_modules中)并运行该版本的gulp
。这意味着每个项目可以具有自己的gulp
版本。但并非所有工具都具有此功能。
使用npx
:
npx gulp
较新版本的npm
附带一个名为npx
的命令,该命令将搜索项目的node_modules目录以查找要执行的模块。这意味着您无需全局安装特定于项目的工具。除了避免全局安装命令(可能是安全问题,也可能不是安全问题)以外,它还允许您安装项目的特定版本的工具。
如果您的npm安装没有npx,则可以从npm本身安装它:
npm install -g npx