有没有办法 "npm init" 一个 ES 模块?

Is there a way to "npm init" an ES module?

所有现代版本的 Node 都需要 运行 包,因为模块是 package.json 中的 "type": "module",但我没有看到任何 npm inityarn init 将添加 属性.

包管理器 是否有一个标志,一种将值添加到 package.json 的简单方法(即 npm package-property set type module 或类似的东西)?

对于 ES 兼容模块,存在 create-esm 包。除其他事项外 (docs),它还填充模块字段。

看来你可以使用 npm init esm

这完全符合您的要求:

npm init es6

它使用 "type": "module" 设置创建一个 package.json

来源:https://www.npmjs.com/package/create-es6

全局安装create-esnext

yarn global add create-esnext

# or

npm i -g create-esnext

在您要 运行 npm init:

的文件夹中
yarn create esnext

# or 

npm init esnext

我个人使用 TSModule 代替 npm init 创建新的 ESM 包,因为它可以处理这个问题,而且我可以使用 TypeScript 编写纯 ESM(并且它标准化了 exports package.json字段)。

当运行 pnpm init

时可以设置默认值
npm config set init.type module