generate-entry-es.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const config = require('../src/config.json');
  2. const packageConfig = require('../package.json');
  3. const path = require('path');
  4. const fs = require('fs-extra');
  5. // 获取依赖关系
  6. const styleMap = new Map();
  7. const tasks = [];
  8. let outputFileEntry = ``;
  9. let components = [];
  10. // import Locale from './packages/locale';\n
  11. config.nav.forEach((item) => {
  12. item.packages.forEach((element) => {
  13. styleMap.set(element.name, {
  14. name: element.name,
  15. children: element.styleDeps
  16. });
  17. // gen entry
  18. let outputMjs = `import '../../styles/reset.css';\nimport _${element.name} from '../_es/${element.name}.js';
  19. const treeshaking = (t) => t;
  20. const ${element.name} = treeshaking(_${element.name});
  21. export { ${element.name} };`;
  22. tasks.push(
  23. fs.outputFile(path.resolve(__dirname, `../dist/packages/${element.name}/index.mjs`), outputMjs, 'utf8', () => {
  24. // console.log('')
  25. })
  26. );
  27. let folderName = element.name.toLowerCase();
  28. outputFileEntry += `export * from "./packages/${folderName}/index.mjs";\n`;
  29. components.push(element.name);
  30. });
  31. });
  32. outputFileEntry += components
  33. .map((name) => `import { ${name} } from "./packages/${name.toLowerCase()}/index.mjs";`)
  34. .join('\n');
  35. outputFileEntry += `\nimport { Locale } from "./packages/locale/lang";
  36. function install(app) {
  37. const packages = [${components.join(',')}];
  38. packages.forEach((item) => {
  39. if (item.install) {
  40. app.use(item);
  41. } else if (item.name) {
  42. app.component(item.name, item);
  43. }
  44. });
  45. }
  46. const version = '${packageConfig.version}';
  47. var stdin_default = {
  48. install,
  49. version,
  50. Locale
  51. };
  52. export {
  53. stdin_default as default,
  54. install,
  55. version,
  56. Locale
  57. };`;
  58. tasks.push(
  59. fs.outputFile(path.resolve(__dirname, `../dist/nutui.es.js`), outputFileEntry, 'utf8', () => {
  60. // console.log('')
  61. })
  62. );
  63. Promise.all(tasks);