145 lines
4.3 KiB
JavaScript
145 lines
4.3 KiB
JavaScript
import fs from 'fs-extra';
|
|
import path from 'path';
|
|
import { removeBuild, resolvePath, updatePackageJson } from '../../../scripts/build-helper.mjs';
|
|
|
|
removeBuild(import.meta.url);
|
|
|
|
const { __dirname, INPUT_DIR } = resolvePath(import.meta.url);
|
|
const __root = path.resolve(__dirname, '../');
|
|
const pkg = path.resolve(__root, './package.json');
|
|
|
|
updatePackageJson(pkg);
|
|
|
|
// update package.json > "exports" for local
|
|
let exports = {};
|
|
let modules = {
|
|
ignoredFolders: ['useconfirm', 'usedialog', 'usetoast', 'usestyle', 'editor', 'chart'],
|
|
umd: [
|
|
` /***************** PrimeVue (Auto-Generated) *****************/
|
|
|
|
// API
|
|
export * from '@primevue/core';
|
|
|
|
// BaseIcon
|
|
export { default as BaseIcon } from '@primevue/icons/baseicon';
|
|
export { default as BaseIconStyle } from '@primevue/icons/baseicon/style';
|
|
|
|
// Themes
|
|
export * from '@primeuix/styled';
|
|
|
|
// UseConfirm
|
|
export * from '../useconfirm/UseConfirm.js';
|
|
|
|
// UseDialog
|
|
export * from '../usedialog/UseDialog.js';
|
|
|
|
// UseToast
|
|
export * from '../usetoast/UseToast.js';
|
|
|
|
// UseStyle
|
|
export * from '../usestyle/UseStyle.js';
|
|
|
|
// Editor
|
|
export * from '../editor/Editor.vue';
|
|
export { default as Editor } from '../editor/Editor.vue';
|
|
export * from '../editor/style/EditorStyle.js';
|
|
export { default as EditorStyle } from '../editor/style/EditorStyle.js';
|
|
|
|
// Chart
|
|
export * from '../chart/Chart.vue';
|
|
export { default as Chart } from '../chart/Chart.vue';
|
|
export * from '../chart/style/ChartStyle.js';
|
|
export { default as ChartStyle } from '../chart/style/ChartStyle.js';
|
|
`
|
|
],
|
|
esm: [
|
|
`/***************** PrimeVue (Auto-Generated) *****************/
|
|
|
|
// UseConfirm
|
|
export * from 'primevue/useconfirm';
|
|
|
|
// UseDialog
|
|
export * from 'primevue/usedialog';
|
|
|
|
// UseToast
|
|
export * from 'primevue/usetoast';
|
|
|
|
// UseStyle
|
|
export * from 'primevue/usestyle';
|
|
`
|
|
]
|
|
};
|
|
|
|
fs.readdirSync(path.resolve(__root, INPUT_DIR), { withFileTypes: true })
|
|
.filter((dir) => dir.isDirectory())
|
|
.forEach(({ name: folderName }) => {
|
|
const folderPath = path.resolve(__root, INPUT_DIR + folderName);
|
|
|
|
fs.readdirSync(folderPath).forEach((file) => {
|
|
let fileName = file.split(/(.vue)$|(.js)$/)[0];
|
|
let name = fileName.toLowerCase();
|
|
|
|
if (name === folderName) {
|
|
const validModuleFolder = !modules.ignoredFolders.includes(folderName);
|
|
|
|
exports[`./${folderName}`] = `./${INPUT_DIR}${folderName}/${file}`;
|
|
|
|
if (validModuleFolder) {
|
|
modules.umd.push(
|
|
`
|
|
// ${fileName}
|
|
export * from '../${folderName}/${file}';
|
|
export { default as ${fileName} } from '../${folderName}/${file}';
|
|
`
|
|
);
|
|
modules.esm.push(
|
|
`
|
|
// ${fileName}
|
|
export * from 'primevue/${folderName}';
|
|
export { default as ${fileName} } from 'primevue/${folderName}';
|
|
`
|
|
);
|
|
}
|
|
|
|
try {
|
|
fs.readdirSync(folderPath + '/style').forEach((file) => {
|
|
let subFileName = file.split(/(.js)$/)[0];
|
|
let subName = subFileName.toLowerCase();
|
|
|
|
if (subName === `${folderName}style`) {
|
|
exports[`./${folderName}/style`] = `./${INPUT_DIR}${folderName}/style/${file}`;
|
|
|
|
if (validModuleFolder) {
|
|
modules.umd.push(
|
|
`export * from '../${folderName}/style/${file}';
|
|
export { default as ${subFileName} } from '../${folderName}/style/${file}';
|
|
`
|
|
);
|
|
modules.esm.push(
|
|
`export * from 'primevue/${folderName}/style';
|
|
export { default as ${subFileName} } from 'primevue/${folderName}/style';
|
|
`
|
|
);
|
|
}
|
|
}
|
|
});
|
|
} catch {}
|
|
}
|
|
});
|
|
});
|
|
exports['./*'] = './*';
|
|
|
|
// package.json
|
|
const pkgJson = JSON.parse(fs.readFileSync(pkg, { encoding: 'utf8', flag: 'r' }));
|
|
|
|
pkgJson.exports = exports;
|
|
|
|
fs.writeFileSync(pkg, JSON.stringify(pkgJson, null, 4));
|
|
|
|
// UMD
|
|
fs.writeFileSync(INPUT_DIR + 'umd/primevue.js', modules.umd.join(''));
|
|
|
|
// ESM
|
|
fs.writeFileSync(INPUT_DIR + 'index.js', modules.esm.join(''));
|
|
fs.writeFileSync(INPUT_DIR + 'index.d.ts', modules.esm.join(''));
|