npx 但使用包中的版本 json

npx but use version in package json

我在 javascript 项目中有一个构建脚本,它使用 parcel 遍历文件夹并查找索引文件,然后构建这些项目。当我找到一个索引文件时,我 运行 这个命令:

npx parcel build ${indexFilePath} --out-dir ${outDir} --target node

但是,如果 运行 使用此构建脚本的人还没有使用 npm i 安装软件包,则 npx 命令将安装最新版本的 parcel-bundler,其中 --out-dir现已弃用并破坏了整个脚本。

这是经过提炼后发生的事情:

$ rm -rf node_modules
$ npm i
$ npx parcel --version
1.12.4
$ rm -rf node_modules
$ npx parcel --version
2.0.0-beta.2

npx 是否有任何选项可以使用项目中已有的 package.json 文件中的版本并将其安装到 node_modules?或者我只是将安装步骤集成到我的构建中?这似乎太过分了,因为我需要构建的只是包裹。

我这样使用 npx 是不是在滥用它?

npx 中存在多个关于此问题的问题:#199 & #15

到目前为止,我发现的唯一选择是使用 node repl(在您的情况下应该可用)从我的 package.json 中解析和提取版本

像这样:

npx parcel@`node -p -e "const p = require('./package.json'); p.dependencies['parcel']"` --version