package.json 是否可写成这样呢"type": "commonjs"||"module"? 到时候2种都可以使用?

npm的package.json的 type字段,
我们知道:
一般可以填写:commonjsmodule

{
  "name": "demo-01",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "type": "commonjs",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    ...
  }
}

请问下:
1.除了前面2种值,还有其他的值的可能吗?
2.是否可写成这样呢"type": "commonjs"||"module"? 到时候2种都可以使用。

回复
阅读 520
3 个回答

不行嗷,只能二选一,文档里只提到了 commonjsmodule 两个值。

不过你可以通过后缀来区分。

Regardless of the value of the "type" field, .mjs files are always treated as ES modules and .cjs files are always treated as CommonJS.
不管"type"字段的值是多少,.mjs文件总是被视为 ES modules.cjs文件总是被视为 CommonJS

Modules: Packages | Node.js v19.4.0 Documentation

目前来看,应该是不行的。

不过你可以考虑最下面这句,给不同的 JS 使用不同的后缀名来达到目的。

Regardless of the value of the "type" field, .mjs files are always treated as ES modules and .cjs files are always treated as CommonJS.

译:无论 "类型 "字段的值如何,.mjs文件总是被视为ES模块,.cjs文件总是被视为CommonJS。

1.基本不可能,ES6模块化官方已成标准https://developer.mozilla.org...,没有必要再出现新的模块化
2.不可以写成"type": "commonjs"||"module",CommonJS,ES6模块化二选一

推荐问题
宣传栏