如何在node.js中使用一个模块的本地版本。例如,在我的应用程序中,我安装了coffee-script:
npm install coffee-script
这会将其安装在。/node_modules中,而coffee命令则安装在。/node_modules/.bin/coffee中。当我在项目的主文件夹中时,是否有一种方法可以运行此命令?我想我在寻找类似于捆绑执行者的东西。基本上,我想指定一个参与项目的每个人都应该使用的coffee-script版本。
我知道我可以添加-g标志来在全球范围内安装它,这样咖啡在任何地方都可以正常工作,但是如果我想在每个项目中使用不同版本的咖啡呢?
我提出了一个我已经开发的新解决方案(05/2021)
您可以使用lpx https://www.npmjs.com/package/lpx来
运行本地node_modules/.bin文件夹中的二进制文件
在工作空间的任何地方运行工作空间根目录的node_modules/.bin中的二进制文件
如果在本地找不到二进制文件,LPX不会下载任何包(即不像npx)
例子:
LPX TSC -b -w将与本地typescript包一起运行TSC -b -w
如果你想让你的PATH变量根据你当前的工作目录正确地更新,把它添加到你的.bashrc等价文件的末尾(或者任何定义PATH的东西之后):
__OLD_PATH=$PATH
function updatePATHForNPM() {
export PATH=$(npm bin):$__OLD_PATH
}
function node-mode() {
PROMPT_COMMAND=updatePATHForNPM
}
function node-mode-off() {
unset PROMPT_COMMAND
PATH=$__OLD_PATH
}
# Uncomment to enable node-mode by default:
# node-mode
这可能会在每次呈现bash提示符时增加一个短延迟(很可能取决于项目的大小),因此默认情况下禁用它。
您可以在终端中通过分别运行node-mode和node-mode-off来启用和禁用它。
我提出了一个我已经开发的新解决方案(05/2021)
您可以使用lpx https://www.npmjs.com/package/lpx来
运行本地node_modules/.bin文件夹中的二进制文件
在工作空间的任何地方运行工作空间根目录的node_modules/.bin中的二进制文件
如果在本地找不到二进制文件,LPX不会下载任何包(即不像npx)
例子:
LPX TSC -b -w将与本地typescript包一起运行TSC -b -w
你不必再操纵$PATH了!
从npm@5.2.0, npm附带了npx包,它可以让你从本地node_modules/.bin或中央缓存运行命令。
简单地运行:
$ npx [options] <command>[@version] [command-arg]...
默认情况下,npx将检查<命令>是否存在于$PATH或本地项目二进制文件中,并执行它。
当<命令>不在$PATH中时调用npx <命令>将自动从NPM注册表中为你安装一个带有该名称的包,并调用它。当它完成时,安装的包将不会在你的全局包的任何地方,所以你不必担心长期的污染。你可以通过提供——no-install选项来防止这种行为。
对于npm < 5.2.0,您可以通过执行以下命令手动安装npx包:
$ npm install -g npx