Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions packages/module/generate-fed-package-json.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ const sourceFiles = glob

const indexTypings = glob.sync(`${root}/src/index.d.ts`);

const ENV_AGNOSTIC_ROOT = `${root}/dist/dynamic`

async function copyTypings(files, dest) {
const cmds = [];
files.forEach((file) => {
Expand All @@ -22,29 +24,39 @@ async function copyTypings(files, dest) {
async function createPackage(file) {
const fileName = file.split('/').pop();
const esmSource = glob.sync(`${root}/dist/esm/${fileName}/**/index.js`)[0];
const cjsSource = glob.sync(`${root}/dist/cjs/${fileName}/**/index.js`)[0];
const typingsSource = glob.sync(`${root}/dist/esm/${fileName}/**/index.d.ts`)[0]
/**
* Prevent creating package.json for directories with no JS files (like CSS directories)
*/
if (!esmSource) {
return;
}

const destFile = `${path.resolve(`${root}/dist/esm`, fileName)}/package.json`;
const destDir = path.resolve(`${ENV_AGNOSTIC_ROOT}`, fileName)
const destFile = `${destDir}/package.json`;

// ensure the directory exists
fse.ensureDirSync(destDir)

const esmRelative = path.relative(file.replace('/dist/esm', ''), esmSource);
const esmRelative = path.relative(file, esmSource).replace('/dist', '');
const cjsRelative = path.relative(file, cjsSource).replace('/dist', '');
const tsRelative = path.relative(file, typingsSource).replace('/dist', '')
const content = {
main: 'index.js',
main: cjsRelative,
module: esmRelative,
};
const typings = glob.sync(`${root}/src/${fileName}/*.d.ts`);
const cmds = [];
content.typings = 'index.d.ts';
content.typings = tsRelative;
cmds.push(copyTypings(typings, `${root}/dist/${fileName}`));
cmds.push(fse.writeJSON(destFile, content));
return Promise.all(cmds);
}

async function generatePackages(files) {
// ensure the dynamic root exists
fse.ensureDirSync(path.resolve(ENV_AGNOSTIC_ROOT))
const cmds = files.map((file) => createPackage(file));
return Promise.all(cmds);
}
Expand Down