package.json和文件扩展名

https://nodejs.org/docs/v20.13.1/api/packages.html#packagejson-and-file-extensions

作为示例,先看一个项目的package.json,它有"type": "module":

{
  "name": "mock-demo",
  "version": "0.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "axios": "^1.6.8",
    "vue": "^3.4.21"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^5.0.4",
    "json5": "^2.2.3",
    "mockjs": "^1.1.0",
    "vite": "^5.2.8"
  }
}
  • 在包内部,package.json 的 “type” 字段定义了 Node.js 应该如何解释 .js 文件。如果package.json 文件没有 “type” 字段,.js 文件将被当作 CommonJS 对待。

  • package.json 文件中的 “type” 值为 “module” 告诉 Node.js 将该包内的 .js 文件解释为使用 ES module(ECMAScript模块)语法。

  • “type” 字段不仅适用于初始入口点(如 node my-app.js),还适用于由 import 语句和 import() 表达式引用的文件。

  • 以 .mjs 结尾的文件总是作为 ES 模块加载,不管最近的父级 package.json 如何。

  • 以 .cjs 结尾的文件始终作为 CommonJS 加载,不管最近的父级 package.json 如何。

  • .mjs 和 .cjs 扩展名可以用于在同一包内混合使用不同的类型:

    1、在 “type”: “module” 的包中,可以通过将文件命名为 .cjs 扩展名(因为在 “module” 包中,.js 和 .mjs 文件都被当作 ES 模块处理)来指示 Node.js 将特定文件解释为 CommonJS。
    2、在 “type”: “commonjs” 的包中,可以通过将文件命名为 .mjs 扩展名来指示 Node.js 将特定文件解释为 ES 模块(因为在 “commonjs” 包中,.js 和 .cjs 文件都被当作 CommonJS 处理)。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值