如何运行npx命令而不加前缀' npx '



例如,当我运行gulp时,我不必执行npx gulp

我可以省略npx,只运行gulp

我如何为我自己的包做这个?

我已经将mycommand添加到包npmbin配置中,但我仍然总是要做npx mycommand才能工作。

这取决于您的操作系统。在基于unix的操作系统(即。Linux或Mac),您可以使用alias命令:

$ alias gulp="npx gulp"

对于终端会话的其余部分,您可以运行:

$ gulp

运行npx gulp。但是,当您重新启动终端程序时,您将丢失别名。

要使别名永久存在,需要将alias命令添加到适当的启动文件(例如:.bashrc,.profile等)。只需复制/粘贴之前使用的命令,在该文件的末尾,保存并重新启动终端。您将永久拥有别名。

别名在Windows中也是可以的,但是有点棘手;参见Windows命令提示符中的别名。

您不必为gulp使用npx gulp,因为它是全局安装的

那么,有gulp.cmd,gulp.ps1gulpnpx gulp开始在PATH的某个地方,所以你可以从那里运行它们

这个答案很容易,请随意编辑

如果全局安装gulp:npm i -g gulp你可以直接运行gulp

我会避免回答暗示全局安装(npm install -g)。全局安装保证了项目中的每个人都有自己独特的工具集,这也是为什么公司最终会在"如何让项目在本地工作"上建立庞大的wiki页面的原因。

你提到了"bin配置",但也许你误解了这一点。这不是用于指定应用程序将使用的命令。如果您正在制作cli应用程序,那么package. exe中的bin部分。json是指定命令导出的地方根据你的项目。例如,gulp输出gulp命令如下:

"bin": {
"gulp": "./bin/gulp.js"
},

相反,您应该将应用程序所需的依赖项添加到devDependencies。这确保了使用项目的每个人都将获得所有工具的相同版本,例如gulp,tsc使用npx是一个更好的解决方案,因为您可以在devDependencies中添加项目所需的所有内容,而npx将使用该版本。对于常见的命令行工具,使用别名(如@machineghost)建议是一种更好的方法,但要进一步扩展:

  • 有时,命令的名称与包的名称不同。在这些情况下,别名可以使用:
alias tsc='npx --package=typescript tsc'

正常情况下,运行npx时,如果当前项目中没有找到版本,会提示安装。这通常是一个很好的保护措施,因为它提醒您将其添加到项目的devDependencies中。然而,如果你真的想让它"工作"就行了。与全局安装一样,您可以添加"yes"国旗:

alias command=`npx -y gulp`

这将使用当前项目中指定的版本,如果没有,则安装并直接运行。

最新更新