library-template/generateRollupConfig.cjs

65 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2024-01-21 14:13:07 -06:00
const requireContext = require('require-context')
const fs = require('fs')
// const path = require('path')
const requireComponent = requireContext(
'./../../src', true, /\.(js|ts)x?$/, 'lazy'
)
const dependencias = {
Example: '',
VCalendar: "'react-big-calendar', 'moment'"
}
const makeConfig = () => {
let config = ''
requireComponent.keys().forEach(fileName => {
// Ajusta la ruta para que coincida con tus rutas y extensiones de archivo
const folderName = fileName.replace(/components[\\/]/, '').replace(/index\.(jsx|tsx)$/, '')
if (folderName != null && folderName && !folderName.includes('index.')) {
const defaultItem = `
{
input: 'src/components/${folderName}/index.${fileName.endsWith('.tsx') ? 'tsx' : 'jsx'}',
output: {
dir: 'dist/${folderName}',
format: 'es'
},
external: [/@babel\\/runtime/, 'react', 'prop-types'${dependencias[folderName] != null ? (', ' + dependencias[folderName]) : ''}],
plugins: [
typescript(),
babel({
extensions: ['.js', '.jsx', '.ts', '.tsx'],
babelHelpers: 'runtime',
plugins: ['@babel/plugin-transform-runtime']
}),
postcss({ plugins: [autoprefixer()], sourceMap: true, extract: true, minimize: true }),
tailwind({ input: './styles/globals.css', purge: false })
]
},`
config = `${config} ${defaultItem}`
}
})
return config
}
const content = `// File generated by npm run generateRollupFile
import typescript from '@rollup/plugin-typescript';
import babel from '@rollup/plugin-babel';
import postcss from 'rollup-plugin-postcss';
import tailwind from 'rollup-plugin-tailwindcss';
import autoprefixer from 'autoprefixer';
const config = [${makeConfig()}
];
export default config;
`
fs.writeFile('rollup.config.js', content, err => {
if (err) {
console.error(err)
return
}
console.log('file written successfully')
})