【发布时间】:2021-06-24 07:35:44
【问题描述】:
我们的团队构建了一个用于维护的小型 CLI。 package.json 为 bin 属性指定了一个路径,一切正常; "bin": { "eddy": "./dist/src/cli/entry.js"}
使用yargs@17.0.1 实现自动完成。 然而我们最近将项目转换为使用 es6 模块,因为迁移到 Sveltekit,即 package.json 现在包含 type: module。因此,CLI 现在只有在我们运行时才能工作:
什么有效
node --experimental-specifier-resolution=node ./dist/src/cli/entry.js help
但是,如果我们在没有标志的情况下运行它,我们会收到错误“找不到模块”:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module...
所以问题是
我们能否以某种方式“始终”将 experimental-specifier-resolution=node 添加到 CLI - 这样我们就可以继续使用简写 eddy 并利用自动完成功能?
【问题讨论】:
-
如果您的 CLI 是用 TypeScript 编写的,我可以分享解决方案。你能帮忙提供一些细节吗?您可以使用
npm start运行 CLI 吗? -
嗨@VinaySharma - 是的,CLI 是用 Typescript 编写的,是 mono-repo 的一部分。我们不使用 npm start 运行 CLi,而是使用
node --experimental-specifier-resolution=node ./dist/src/cli/entry.js help