windows下是不是只有全局安装npm的模块包才能执行命令行工具?

rayliao
  • 3.1k

比如mocha,我只在项目里面安装它:

npm install mocha

现在我在windows下的cmd运行它的命令行工具:

./node_modules/.bin/_mocha

是不行的。

是不是一定要全局安装npm install -g mocha才可以运行它的命令行工具?

我知道是可以通过在package.json里面配置scriptsnpm run xx

回复
阅读 8k
6 个回答

如果在window下开发,推荐先安装git,安装后就拥有了类linux的环境——git bash的shell:

./node_modules/.bin/_mocha

运行就没问题了哦。

其实只要我们懂得:npm install -g xx 不光是将xx模块安装到全局环境中,还将xx模块所携带的/.bin/中命令注入到了全局环境,使得你可以在shell中:mocha xxx

是的,linux下也一样的

package.json中提供一个bin字段,它是一个命令名和本地文件名的映射。在安装时,如果是全局安装,npm将会使用符号链接把这些文件链接到prefix/bin,如果是本地安装,会链接到./node_modules/.bin/

1.关于npm 的 prefix
在npm中安装全局文件时,npm会把他安装在npm里面配置的prefix路径下,查看prefix的方法是:npm config list,设置方法是 npm config set prefix 你的路径。

2.关于gulp 不是内部或外部命令,也不是可运行的程序或批处理文件 其实这个和prefix没什么关系,npm会把它安装成功后建立的一个可执行文件放在他自己的路径下,你只要找到你安装gulp后生成的gulp.exe文件的位置,把它的路径配置到系统环境变量path 下面就了

其实你可以直接用命令行运行bin内的文件

比如你install 了一个gulp

那么根据gulp的package.json文件,你可以知道bin里面gulp文件运行的位置

然后你就可以运行

node ./node_modules/gulp/bin/gulp.js

效果与 global安装下 运行gulp 效果是一样的。

AndyChen
  • 2
新手上路,请多包涵

用npx命令就可以直接执行本地安装的模块(前提是package.json完整)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏