像 react-create-app 一样获取 json5 文件的 Rollup 静态路径
Get Rollup static path for json5 file like react-create-app does it
我使用 react-create-app
创建了应用程序。当我导入 .json5
文件时,它会将其作为静态文件,将其复制到 build/dist 文件夹和 returns 文件的相对路径,如我导入它的位置:
import foo from './some-file.json5'
console.log(foo); // logs: /static/media/some-file.hash.json5
然后我可以在为我的应用提供服务时轻松获取此文件。
我如何使用 rollup
及其插件来完成同样的事情?
我刚刚为此编写了自己的插件,享受:
import path from "path";
import fs from "fs";
export default function copyAndExportPath() {
return {
name: "copy-and-export-path",
resolveId(source, importer) {
if (source.endsWith(".json5")) {
const absolutePath = path.resolve(path.dirname(importer), source);
return absolutePath;
}
},
load(id, importer) {
if (id.endsWith(".json5")) {
const [base, dest] = id.split("src");
const absolutePathDest = path.join(base, "dist", dest);
const destDir = path.dirname(absolutePathDest);
if (!fs.existsSync(destDir)) {
fs.mkdirSync(destDir, { recursive: true }, (error) => {
if (error) {
throw error;
}
});
}
if (fs.existsSync(destDir)) {
fs.copyFileSync(id, absolutePathDest);
}
return `export default ".${dest}"`;
}
return null;
},
};
}
我使用 react-create-app
创建了应用程序。当我导入 .json5
文件时,它会将其作为静态文件,将其复制到 build/dist 文件夹和 returns 文件的相对路径,如我导入它的位置:
import foo from './some-file.json5'
console.log(foo); // logs: /static/media/some-file.hash.json5
然后我可以在为我的应用提供服务时轻松获取此文件。
我如何使用 rollup
及其插件来完成同样的事情?
我刚刚为此编写了自己的插件,享受:
import path from "path";
import fs from "fs";
export default function copyAndExportPath() {
return {
name: "copy-and-export-path",
resolveId(source, importer) {
if (source.endsWith(".json5")) {
const absolutePath = path.resolve(path.dirname(importer), source);
return absolutePath;
}
},
load(id, importer) {
if (id.endsWith(".json5")) {
const [base, dest] = id.split("src");
const absolutePathDest = path.join(base, "dist", dest);
const destDir = path.dirname(absolutePathDest);
if (!fs.existsSync(destDir)) {
fs.mkdirSync(destDir, { recursive: true }, (error) => {
if (error) {
throw error;
}
});
}
if (fs.existsSync(destDir)) {
fs.copyFileSync(id, absolutePathDest);
}
return `export default ".${dest}"`;
}
return null;
},
};
}