为什么非交互式导入-next-app不使用默认导入别名?

vybvopom  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(83)

非交互式create-next-app有一个参数--import-alias来配置导入别名。

--import-alias <alias-to-configure>
 
  Specify import alias to use (default "@/*").

我不想自定义导入别名,而是使用默认的@/*。在这种情况下,我不应该在执行create-next-app时指定--import-alias,如下所示:

$ npx create-next-app@latest hello --javascript --eslint --no-tailwind --no-src-dir --app
? Would you like to customize the default import alias? » No / Yes

为什么它不自动采用默认值,并问我是否要自定义默认导入别名?
create-next-app的版本是13.4.4。

t3psigkw

t3psigkw1#

如果有任何格式/语言错误,第一个答案就在这里。

**TLDR;

npx create-next-app hello --javascript --eslint --no-tailwind --no-src-dir --app --import-alias '@/*'

只要指定默认别名就可以摆脱提示符

如何和为什么;

我做了一些调查,因为我遇到了类似的问题。我看了一下nextjs的源代码-我不能评论他们应该如何做这件事,但如果我们参考这一行:https://github.com/vercel/next.js/blob/e0ca2ba544b562bf718afadbc75db1885cb41504/packages/create-next-app/index.ts#L376
你会看到一个这样的子句:

if (
  typeof program.importAlias !== 'string' ||
  !program.importAlias.length
) {
...

这似乎是你的问题的根源,该命令正在寻找important的类型,如果有任何输入。这意味着甚至parsing --no-import-alias也不起作用,因为这个条件语句没有考虑它。相比之下,这是源目录选项的条件:

if (
  !process.argv.includes('--src-dir') &&
  !process.argv.includes('--no-src-dir')
) {
...

在这里,它所关心的是你是否设置了选项,如果你设置了一个选项,它就不会支持你。
尽管如此,我试图在Python中使用子进程以编程方式运行此命令,但它仍然不适合我,所以如果您的用例与我的用例相似。我们都被困住了!希望你的只是在一个终端/powershell,这有助于你!

l7wslrjt

l7wslrjt2#

这是CLI中的一个bug。不能以非交互方式禁用导入别名。
我试着把它举起来,但它被关上了:https://github.com/vercel/next.js/issues/56569
因此,唯一的解决方法(如在接受的答案中提到的)是传入一些导入别名。

相关问题