webpack.config.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*eslint-env node*/
  2. /*eslint import/no-nodejs-modules:0 */
  3. const path = require('path');
  4. const webpack = require('webpack');
  5. const [appConfig] = require('../webpack.config');
  6. const staticPath = path.resolve(
  7. __dirname,
  8. '..',
  9. 'src',
  10. 'sentry',
  11. 'static',
  12. 'sentry',
  13. 'app'
  14. );
  15. module.exports = {
  16. module: {
  17. rules: [
  18. {
  19. test: /\.stories\.jsx?$/,
  20. loaders: [
  21. {
  22. loader: require.resolve('@storybook/addon-storysource/loader'),
  23. options: {
  24. prettierConfig: {
  25. parser: 'babylon',
  26. },
  27. },
  28. },
  29. ],
  30. enforce: 'pre',
  31. },
  32. {
  33. test: /\.tsx?$/,
  34. loader: 'ts-loader',
  35. },
  36. {
  37. test: /\.po$/,
  38. loader: 'po-catalog-loader',
  39. query: {
  40. referenceExtensions: ['.js', '.jsx'],
  41. domain: 'sentry',
  42. },
  43. },
  44. {
  45. test: /\.css$/,
  46. use: ['style-loader', 'css-loader'],
  47. },
  48. {
  49. test: /app\/icons\/.*\.svg$/,
  50. use: [
  51. {
  52. loader: 'svg-sprite-loader',
  53. },
  54. {
  55. loader: 'svgo-loader',
  56. },
  57. ],
  58. },
  59. {
  60. test: /\.less$/,
  61. use: [
  62. {
  63. loader: 'style-loader',
  64. },
  65. {
  66. loader: 'css-loader',
  67. },
  68. {
  69. loader: 'less-loader',
  70. },
  71. ],
  72. },
  73. {
  74. test: /\.(woff|woff2|ttf|eot|svg|png|gif|ico|jpg)($|\?)/,
  75. exclude: /app\/icons\/.*\.svg$/,
  76. loader: 'file-loader?name=' + '[name].[ext]',
  77. },
  78. ],
  79. },
  80. plugins: [
  81. new webpack.ProvidePlugin({
  82. $: 'jquery',
  83. jQuery: 'jquery',
  84. 'window.jQuery': 'jquery',
  85. 'root.jQuery': 'jquery',
  86. underscore: 'underscore',
  87. _: 'underscore',
  88. }),
  89. new webpack.DefinePlugin({
  90. 'process.env': {
  91. IS_PERCY: true,
  92. },
  93. }),
  94. ],
  95. resolve: {
  96. extensions: appConfig.resolve.extensions,
  97. alias: Object.assign({}, appConfig.resolve.alias, {
  98. app: staticPath,
  99. }),
  100. },
  101. };