跳至主内容

@babel/plugin-transform-json-modules

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

import ... with { type: "json" } 声明转换为平台特定的 API 实现,通过读取文件内容后执行 JSON.parse 解析导入的 JSON 文件。

此插件应用的转换取决于顶层的 targets 配置,用于检测生成的代码应兼容 Node.js、浏览器或两者兼顾。当目标环境为 Node.js 时,生成的代码还会根据是否将模块编译为 CommonJS 而有所不同。

注意

此插件在将模块编译为 AMD、SystemJS 或 UMD 时不可用。

注意

此插件仅转换静态导入声明,不处理动态 import() 调用。

示例

input.js
import data from "./data.json" with { type: "json" };

将被转换为

output.js
const data = await fetch(import.meta.resolve("./data.json")).then(r => r.json());

安装

npm install --save-dev @babel/plugin-transform-json-modules

用法

通过配置文件(推荐)

babel.config.json
{
"plugins": ["@babel/plugin-transform-json-modules"]
}

通过命令行

Shell
babel --plugins=@babel/plugin-transform-json-modules script.js

通过 Node API

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-json-modules"],
});

配置选项

uncheckedRequire

类型:boolean
默认值:false
添加版本:v7.25.0

设为 true 时,插件将直接使用 require 导入 JSON 文件以生成更简洁的输出。当目标环境为 CommonJS 时,此选项产生的代码更易被打包器分析,但不会校验导入的模块是否为合法 JSON:

输入

import data from "./data.json" with { type: "json" };

输出 (未启用 uncheckedRequire: true)

const data = JSON.parse(require("fs").readFileSync(require.resolve("./data.json")));

输出 (启用 uncheckedRequire: true)

const data = require("./data.json");

参考