base.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const path = require('path');
  2. const _ = require('lodash');
  3. function resolve(...dirs) {
  4. return path.join(__dirname, '../..', ...dirs);
  5. }
  6. module.exports = {
  7. "addons": [
  8. {
  9. name: "storybook-addon-turbo-build",
  10. options: {
  11. optimizationLevel: 3,
  12. },
  13. },
  14. ],
  15. webpackFinal: async (config) => {
  16. const rules =
  17. (config.module.rules &&
  18. config.module.rules.filter(rule => {
  19. const test = _.toString(rule && rule.test);
  20. if (/\.css/i.test(test) || /\.s(c|a)ss/i.test(test)) {
  21. return false;
  22. }
  23. return true;
  24. })) ||
  25. [];
  26. rules.unshift({
  27. test: /\.tsx/,
  28. exclude: /node_modules/,
  29. loader: 'esbuild-loader',
  30. options: {
  31. loader: 'tsx',
  32. target: 'es2015'
  33. }
  34. });
  35. rules.unshift({
  36. test: /\.ts/,
  37. exclude: /node_modules/,
  38. loader: 'esbuild-loader',
  39. options: {
  40. loader: 'ts',
  41. target: 'es2015'
  42. }
  43. });
  44. rules.push(
  45. {
  46. test: /\.css$/,
  47. use: ['style-loader', 'css-loader']
  48. },
  49. );
  50. rules.push(
  51. {
  52. test: /\.s(a|c)ss$/,
  53. include: [resolve('packages/semi-ui'), resolve('packages/semi-foundation'), resolve('packages/semi-icons')],
  54. use: ['style-loader', 'css-loader', 'sass-loader', resolve('packages/semi-webpack/lib/semi-theme-loader.js')],
  55. }
  56. );
  57. config.module.rules = rules;
  58. config.resolve.extensions.push('.js', '.jsx', '.ts', '.tsx');
  59. config.resolve.symlinks = false;
  60. config.resolve.alias = {
  61. '@douyinfe/semi-foundation': resolve('packages/semi-foundation'),
  62. '@douyinfe/semi-icons': resolve('packages/semi-icons/src'),
  63. '@douyinfe/semi-ui': resolve('packages/semi-ui'),
  64. '@douyinfe/semi-theme-default': resolve('packages/semi-theme-default'),
  65. '@douyinfe/semi-illustrations': resolve('packages/semi-illustrations/src'),
  66. '@douyinfe/semi-animation': resolve('packages/semi-animation'),
  67. '@douyinfe/semi-animation-react': resolve('packages/semi-animation-react'),
  68. '@douyinfe/semi-animation-styled': resolve('packages/semi-animation-styled')
  69. };
  70. config.devtool = 'source-map';
  71. return config;
  72. }
  73. };