webpack.tests.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // HACK for ProvidePlugin
  2. require('@yarnpkg/pnpify').patchFs()
  3. const path = require('path')
  4. const webpack = require('webpack')
  5. const MomentLocalesPlugin = require('moment-locales-webpack-plugin')
  6. const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin')
  7. const { publicPackageStructs } = require('./scripts/lib/package-index')
  8. const { buildAliasMap } = require('./scripts/lib/new-webpack')
  9. module.exports = (env) => {
  10. let fromSrc = env && env.PACKAGES_FROM_SOURCE
  11. return {
  12. mode: 'development',
  13. devtool: 'source-map',
  14. entry: './tmp/tests/index.js',
  15. output: {
  16. filename: 'all.js',
  17. path: path.join(__dirname, 'tmp/tests')
  18. },
  19. resolve: {
  20. extensions: [ '.ts', '.tsx', '.js' ],
  21. alias: fromSrc ? buildAliasMap(publicPackageStructs) : {}
  22. },
  23. module: {
  24. rules: [
  25. {
  26. test: /\.tsx?$/,
  27. use: [
  28. { loader: 'ts-loader', options: { transpileOnly: true } }
  29. ]
  30. },
  31. {
  32. test: /\.css$/,
  33. use: [
  34. { loader: 'style-loader' },
  35. { loader: 'css-loader', options: { sourceMap: true, importLoaders: 1 } },
  36. { loader: 'postcss-loader', options: { sourceMap: true } }
  37. ]
  38. }
  39. ]
  40. },
  41. plugins: [
  42. new webpack.ProvidePlugin({
  43. $: 'jquery',
  44. jQuery: 'jquery'
  45. }),
  46. new MomentLocalesPlugin({
  47. localesToKeep: [ 'es' ], // a test relies on this
  48. }),
  49. new MomentTimezoneDataPlugin({
  50. matchZones: [ 'Europe/Moscow' ] // a test relies on this
  51. })
  52. ],
  53. stats: {
  54. warningsFilter: /export .* was not found in/
  55. }
  56. }
  57. }