generate-types.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const config = require('../src/config.json');
  2. const path = require('path');
  3. const fs = require('fs-extra');
  4. let importStr = `import { App } from 'vue';
  5. declare class UIComponent {
  6. static install(vue: App): void;
  7. }\n`;
  8. const packages = [];
  9. config.nav.map(item => {
  10. item.packages.forEach(element => {
  11. let { name, show } = element;
  12. if (show) {
  13. importStr += `declare class ${name} extends UIComponent {}\n`;
  14. packages.push(name);
  15. }
  16. });
  17. });
  18. let installFunction = `
  19. export interface InstallationOptions {
  20. locale?: any;
  21. lang?: any;
  22. }
  23. declare function install(app: App, options?: InstallationOptions): void;
  24. export { ${packages.join(',')} };
  25. declare const _default: {
  26. install: typeof install;
  27. version: string;
  28. };
  29. export default _default;`;
  30. let fileStr = importStr + installFunction;
  31. fs.outputFile(
  32. path.resolve(__dirname, '../dist/nutui.d.ts'),
  33. fileStr,
  34. 'utf8',
  35. error => {
  36. // logger.success(`${package_config_path} 文件写入成功`);
  37. }
  38. );
  39. fs.outputFile(
  40. path.resolve(__dirname, '../dist/index.d.ts'),
  41. `import * as NutUI from './nutui';
  42. export default NutUI;
  43. export * from './nutui';`,
  44. 'utf8',
  45. error => {
  46. // logger.success(`${package_config_path} 文件写入成功`);
  47. }
  48. );