webpack.config.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
  2. var cpus = require('os').cpus().length;
  3. var forkCheckerCpus = cpus > 2 ? 2 : 1;
  4. var threadCpus = cpus - forkCheckerCpus;
  5. // Use sourcemaps if in watch or debug mode;
  6. var devtool = 'eval';
  7. if (process.argv.indexOf('--watch') !== -1) {
  8. devtool = 'cheap-module-eval-sourcemap';
  9. }
  10. module.exports = {
  11. resolve: {
  12. extensions: ['.ts', '.tsx', '.js']
  13. },
  14. bail: true,
  15. devtool: devtool,
  16. plugins: [
  17. new ForkTsCheckerWebpackPlugin({
  18. workers: forkCheckerCpus,
  19. checkSyntacticErrors: true
  20. })
  21. ],
  22. module: {
  23. rules: [
  24. {
  25. test: /\.tsx?$/,
  26. use: [
  27. { loader: 'thread-loader', options: { workers: threadCpus } },
  28. { loader: 'ts-loader', options: { happyPackMode: true } }
  29. ]
  30. },
  31. {
  32. test: /\.js$/,
  33. use: ['source-map-loader'],
  34. enforce: 'pre',
  35. // eslint-disable-next-line no-undef
  36. exclude: /node_modules/
  37. },
  38. { test: /\.css$/, use: ['style-loader', 'css-loader'] },
  39. { test: /\.csv$/, use: 'raw-loader' },
  40. { test: /\.ipynb$/, use: 'json-loader' },
  41. { test: /\.html$/, use: 'file-loader' },
  42. { test: /\.md$/, use: 'raw-loader' },
  43. { test: /\.(jpg|png|gif)$/, use: 'file-loader' },
  44. { test: /\.js.map$/, use: 'file-loader' },
  45. {
  46. test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
  47. use: 'url-loader?limit=10000&mimetype=application/font-woff'
  48. },
  49. {
  50. test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
  51. use: 'url-loader?limit=10000&mimetype=application/font-woff'
  52. },
  53. {
  54. test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
  55. use: 'url-loader?limit=10000&mimetype=application/octet-stream'
  56. },
  57. { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, use: 'file-loader' },
  58. {
  59. test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
  60. use: 'url-loader?limit=10000&mimetype=image/svg+xml'
  61. }
  62. ]
  63. }
  64. };