Aucune description

rollup.config.js 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import resolve from "@rollup/plugin-node-resolve";
  2. import commonjs from "@rollup/plugin-commonjs";
  3. import image from '@rollup/plugin-image';
  4. import alias from '@rollup/plugin-alias';
  5. import postcss from 'rollup-plugin-postcss-modules'
  6. import babel from "rollup-plugin-babel";
  7. import json from "rollup-plugin-json";
  8. import autoprefixer from 'autoprefixer';
  9. import postcssUrl from 'postcss-url';
  10. import peerDepsExternal from 'rollup-plugin-peer-deps-external';
  11. import visualizer from 'rollup-plugin-visualizer';
  12. import analyze from 'rollup-plugin-analyzer';
  13. // import url from '@rollup/plugin-url';
  14. // import less from "rollup-plugin-less";
  15. import nodeEval from 'node-eval';
  16. export function getModuleExports(moduleId) {
  17. const id = require.resolve(moduleId)
  18. const moduleOut = nodeEval(fs.readFileSync(id).toString(), id)
  19. let result = []
  20. const excludeExports = /^(default|__)/
  21. if (moduleOut && typeof moduleOut === 'object') {
  22. result = Object.keys(moduleOut)
  23. .filter(name => !excludeExports.test(name))
  24. }
  25. return result
  26. }
  27. export function getNamedExports(moduleIds) {
  28. const result = {}
  29. moduleIds.forEach( id => {
  30. result[id] = getModuleExports(id)
  31. })
  32. return result
  33. }
  34. const fs = require('fs');
  35. const path = require('path');
  36. const componentsFold = 'src/components';
  37. const cModuleNames = fs.readdirSync(path.resolve(componentsFold));
  38. const cModuleMap = cModuleNames.reduce((prev, name) => {
  39. const modulePath = `${componentsFold}/${name}`;
  40. prev[name] = `${modulePath}/index.ts`;
  41. const child = fs.readdirSync(path.resolve(modulePath));
  42. child.forEach(c => {
  43. const childFoldPath = `${modulePath}/${c}`;
  44. console.log('childFoldPath: ', childFoldPath);
  45. const isDir = fs.statSync(childFoldPath).isDirectory();
  46. if (isDir) {
  47. if (fs.existsSync(`${childFoldPath}/index.tsx`)) {
  48. prev[`${name}-${c}`] = `${childFoldPath}/index.tsx`;
  49. }
  50. if (c === 'Common' && fs.existsSync(childFoldPath) && fs.statSync(childFoldPath).isDirectory()) {
  51. const commonComponentsArr = fs.readdirSync(childFoldPath);
  52. commonComponentsArr.forEach(commonComponentFold => {
  53. const commonComponentFoldPath = `${childFoldPath}/${commonComponentFold}`;
  54. const isCommonComponentDir = fs.statSync(commonComponentFoldPath).isDirectory();
  55. if (isCommonComponentDir && fs.existsSync(`${commonComponentFoldPath}/index.tsx`)) {
  56. prev[`${name}-${c}-common-${commonComponentFold}`] = `${commonComponentFoldPath}/index.tsx`;
  57. }
  58. });
  59. }
  60. }
  61. });
  62. console.log('prev: ', prev);
  63. return prev;
  64. }, {});
  65. const extensions = ['.js', '.jsx', '.ts', '.tsx'];
  66. export default {
  67. input: {
  68. '.': "src/lib-build.js",
  69. ...cModuleMap
  70. },
  71. output: [
  72. {
  73. dir: "lib",
  74. sourcemap: true,
  75. entryFileNames: '[name]/index.js',
  76. exports: 'named',
  77. // file: "lib/bundle.js",
  78. format: "cjs"
  79. },
  80. {
  81. dir: "eslib",
  82. sourcemap: true,
  83. entryFileNames: '[name]/index.js',
  84. exports: 'named',
  85. // file: "lib/bundle.js",
  86. format: "es"
  87. }
  88. ],
  89. plugins: [
  90. peerDepsExternal(),
  91. resolve({
  92. mainFields: ['jsnext'],
  93. preferBuiltins: true,
  94. browser: true,
  95. extensions,
  96. }),
  97. commonjs({
  98. include: 'node_modules/**',
  99. browser: true,
  100. namedExports: {
  101. ...getNamedExports([
  102. 'prop-types',
  103. 'draft-js',
  104. ]),
  105. 'braft-extensions/dist/emoticon': ['defaultEmoticons']
  106. },
  107. }),
  108. babel({
  109. exclude: "node_modules/**",
  110. runtimeHelpers: true,
  111. extensions,
  112. }),
  113. image(),
  114. json(),
  115. // url(),
  116. // less(),
  117. postcss({
  118. extensions: ['.css', '.less'],
  119. plugins: [
  120. autoprefixer(),
  121. postcssUrl({
  122. url: 'inline'
  123. }),
  124. ],
  125. modules: true,
  126. }),
  127. alias({
  128. entries: [
  129. { find: '@', replacement: 'src' },
  130. { find: '@components', replacement: 'src/components' },
  131. ]
  132. }),
  133. visualizer({
  134. sourcemap: true,
  135. open: true,
  136. }),
  137. analyze(),
  138. ],
  139. onwarn: function(warning) {
  140. // Skip certain warnings
  141. // should intercept ... but doesn't in some rollup versions
  142. if ( warning.code === 'THIS_IS_UNDEFINED' ) { return; }
  143. // console.warn everything else
  144. console.warn( warning.message );
  145. }
  146. };