createPages.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env node
  2. const fs = require('fs');
  3. const filePath = process.argv[2];
  4. const name = process.argv[3];
  5. var styles = {
  6. bold: ['\x1B[1m', '\x1B[22m'],
  7. italic: ['\x1B[3m', '\x1B[23m'],
  8. underline: ['\x1B[4m', '\x1B[24m'],
  9. inverse: ['\x1B[7m', '\x1B[27m'],
  10. strikethrough: ['\x1B[9m', '\x1B[29m'],
  11. white: ['\x1B[37m', '\x1B[39m'],
  12. grey: ['\x1B[90m', '\x1B[39m'],
  13. black: ['\x1B[30m', '\x1B[39m'],
  14. blue: ['\x1B[34m', '\x1B[39m'],
  15. cyan: ['\x1B[36m', '\x1B[39m'],
  16. green: ['\x1B[32m', '\x1B[39m'],
  17. magenta: ['\x1B[35m', '\x1B[39m'],
  18. red: ['\x1B[31m', '\x1B[39m'],
  19. yellow: ['\x1B[33m', '\x1B[39m'],
  20. whiteBG: ['\x1B[47m', '\x1B[49m'],
  21. greyBG: ['\x1B[49;5;8m', '\x1B[49m'],
  22. blackBG: ['\x1B[40m', '\x1B[49m'],
  23. blueBG: ['\x1B[44m', '\x1B[49m'],
  24. cyanBG: ['\x1B[46m', '\x1B[49m'],
  25. greenBG: ['\x1B[42m', '\x1B[49m'],
  26. magentaBG: ['\x1B[45m', '\x1B[49m'],
  27. redBG: ['\x1B[41m', '\x1B[49m'],
  28. yellowBG: ['\x1B[43m', '\x1B[49m'],
  29. };
  30. if (!filePath || !name) {
  31. console.error(styles.red[0], `输入错误`);
  32. console.error(
  33. styles.red[0],
  34. `请输入${!filePath ? '路径' : ''}${!name ? '名字' : ''}!`
  35. );
  36. return;
  37. }
  38. try {
  39. function firstUpperCase(name) {
  40. return name.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {
  41. return $1.toUpperCase() + $2.toLowerCase();
  42. });
  43. }
  44. const fileName = firstUpperCase(name);
  45. fs.mkdirSync(`./src/pages/${fileName}`);
  46. fs.writeFileSync(`./src/pages/${fileName}/index.js`, index());
  47. fs.writeFileSync(`./src/pages/${fileName}/${fileName}.tsx`, tmp());
  48. fs.writeFileSync(`./src/pages/${fileName}/${fileName}.less`, style());
  49. function index() {
  50. return `import ${fileName} from './${fileName}.tsx';
  51. import './${fileName}.less';
  52. export default ${fileName}
  53. `;
  54. }
  55. function tmp() {
  56. return `import React from 'react';
  57. import { Button } from 'antd';
  58. export default class ${fileName} extends React.Component {
  59. test() {
  60. console.log('${fileName}');
  61. }
  62. render() {
  63. return (
  64. <div className="${name}-wrapper">
  65. ${fileName}
  66. <div>
  67. <Button onClick={(e) => this.test()}>goto</Button>
  68. </div>
  69. </div>
  70. );
  71. }
  72. }`;
  73. }
  74. function style() {
  75. return `.${name}-wrapper {
  76. background-color: blanchedalmond;
  77. }`;
  78. }
  79. console.log(styles.green[0], '文件创成功');
  80. } catch (e) {
  81. console.log(styles.red[0], '出现错误', e);
  82. }