vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
45 lines (44 loc) • 1.78 kB
JavaScript
;
/*
* We create a file `dist/server/package.json` to support ESM users.
* Otherwise, following error is thrown:
* Must use import to load ES Module: dist/server/pageFiles.js
* require() of ES modules is not supported.
* require() of dist/server/pageFiles.js from node_modules/vike/dist/esm/node/runtime/page-files/setup.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
* Reproduction: https://github.com/brillout/vite-plugin-ssr-server-import-syntax
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginDistPackageJsonFile = pluginDistPackageJsonFile;
const rollupIsEsm_js_1 = require("../../shared/rollupIsEsm.js");
const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
function pluginDistPackageJsonFile() {
let config;
return {
name: 'vike:build:pluginDistPackageJsonFile',
apply: 'build',
configResolved(config_) {
config = config_;
},
generateBundle(options, bundle) {
if (!(0, isViteServerBuild_js_1.isViteServerBuild)(config))
return;
const isEsm = (0, rollupIsEsm_js_1.rollupIsEsm)(options);
const fileName = 'package.json';
if (bundle[fileName])
return; // E.g. already generated by Telefunc / vike
this.emitFile({
fileName,
type: 'asset',
source: getPackageJsonContent(isEsm),
});
},
};
}
function getPackageJsonContent(isEsm) {
if (isEsm) {
return `{ "type": "module" }`;
}
else {
return `{ "type": "commonjs" }`;
}
}