例如,当我运行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.ps1
和gulp
从npx 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`
这将使用当前项目中指定的版本,如果没有,则安装并直接运行。