webpack.common.config.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const path = require('path');
  2. module.exports = {
  3. entry: {
  4. index: './src/index.tsx',
  5. framework: ['react', 'react-dom'],
  6. },
  7. output: {
  8. filename: 'js/bundle.js',
  9. path: path.resolve(__dirname, '../dist'),
  10. },
  11. devtool: 'source-map',
  12. resolve: {
  13. // Add '.ts' and '.tsx' as resolvable extensions.
  14. extensions: ['.ts', '.tsx', '.js', '.json'],
  15. },
  16. module: {
  17. rules: [
  18. {
  19. test: /\.tsx?$/,
  20. loader: 'awesome-typescript-loader',
  21. },
  22. {
  23. test: /\.(js|jsx)$/,
  24. use: 'babel-loader',
  25. exclude: /node_modules/,
  26. },
  27. {
  28. test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,
  29. use: [
  30. {
  31. loader: 'url-loader',
  32. options: {
  33. name: '[name].[ext]',
  34. outputPath: 'images/',
  35. limit: 4096,
  36. fallback: {
  37. loader: 'file-loader',
  38. options: {
  39. name: 'img/[name].[hash:8].[ext]',
  40. },
  41. },
  42. },
  43. },
  44. ],
  45. },
  46. {
  47. test: /\.(eot|ttf|svg|woff|woff2)$/,
  48. use: {
  49. loader: 'file-loader',
  50. options: {
  51. name: '[name]_[hash].[ext]',
  52. outputPath: 'font/',
  53. },
  54. },
  55. },
  56. ],
  57. },
  58. };