Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. const path = require('path');
  2. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  3. const TerserPlugin = require('terser-webpack-plugin');
  4. const rtlcss = require('rtlcss');
  5.  
  6. const useExternalCss =
  7. process.env.CARBON_REACT_STORYBOOK_USE_EXTERNAL_CSS === 'true';
  8.  
  9. const useStyleSourceMap =
  10. process.env.CARBON_REACT_STORYBOOK_USE_STYLE_SOURCEMAP === 'true';
  11.  
  12. const useRtl = process.env.CARBON_REACT_STORYBOOK_USE_RTL === 'true';
  13.  
  14. const styleLoaders = [
  15. {
  16. loader: 'css-loader',
  17. options: {
  18. importLoaders: 2,
  19. sourceMap: useStyleSourceMap,
  20. },
  21. },
  22. {
  23. loader: 'postcss-loader',
  24. options: {
  25. plugins: () => {
  26. const autoPrefixer = require('autoprefixer')({
  27. browsers: ['last 1 version', 'ie >= 11'],
  28. });
  29. return !useRtl ? [autoPrefixer] : [autoPrefixer, rtlcss];
  30. },
  31. sourceMap: useStyleSourceMap,
  32. },
  33. },
  34. {
  35. loader: 'sass-loader',
  36. options: {
  37. includePaths: [path.resolve(__dirname, '..', 'node_modules')],
  38. data: `
  39. $feature-flags: (
  40. ui-shell: true,
  41. );
  42. `,
  43. sourceMap: useStyleSourceMap,
  44. },
  45. },
  46. ];
  47.  
  48. module.exports = (baseConfig, env, defaultConfig) => {
  49. defaultConfig.devtool = useStyleSourceMap ? 'source-map' : '';
  50. defaultConfig.optimization = {
  51. ...defaultConfig.optimization,
  52. minimizer: [
  53. new TerserPlugin({
  54. sourceMap: true,
  55. terserOptions: {
  56. mangle: false,
  57. },
  58. }),
  59. ],
  60. };
  61.  
  62. defaultConfig.module.rules.push({
  63. test: /-story\.jsx?$/,
  64. loaders: [
  65. {
  66. loader: require.resolve('@storybook/addon-storysource/loader'),
  67. options: {
  68. prettierConfig: {
  69. parser: 'babylon',
  70. printWidth: 80,
  71. tabWidth: 2,
  72. bracketSpacing: true,
  73. trailingComma: 'es5',
  74. singleQuote: true,
  75. },
  76. },
  77. },
  78. ],
  79. enforce: 'pre',
  80. });
  81.  
  82. defaultConfig.module.rules.push({
  83. test: /\.scss$/,
  84. sideEffects: true,
  85. use: [
  86. { loader: useExternalCss ? MiniCssExtractPlugin.loader : 'style-loader' },
  87. ...styleLoaders,
  88. ],
  89. });
  90.  
  91. if (useExternalCss) {
  92. defaultConfig.plugins.push(
  93. new MiniCssExtractPlugin({
  94. filename: '[name].[contenthash].css',
  95. })
  96. );
  97. }
  98.  
  99. return defaultConfig;
  100. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement