webpack.server.dev.config.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const HtmlWebpackPlugin = require('html-webpack-plugin');
  2. const path = require('path');
  3. const commonConfig = {
  4. mode: "development",
  5. module: {
  6. rules: [{
  7. test: /\.tsx?$/,
  8. loader: 'ts-loader',
  9. exclude: /node_modules/
  10. },{
  11. test: /\.jsx?$/,
  12. loader: 'babel-loader',
  13. exclude: [/node_modules/]
  14. },{
  15. test: /\.s?css$/,
  16. use: ['style-loader', {
  17. loader: 'css-loader',
  18. options: {
  19. modules: {
  20. localIdentName:'[local]'
  21. }
  22. }
  23. }, 'sass-loader'],
  24. exclude: /node_modules/
  25. }
  26. ]
  27. },
  28. resolve: {
  29. extensions: [ '.tsx', '.ts', '.js', 'jsx' ],
  30. fallback: {
  31. fs: false,
  32. buffer: require.resolve('buffer'),
  33. crypto: require.resolve('crypto-browserify'),
  34. path: require.resolve('path-browserify'),
  35. stream: require.resolve('stream-browserify')
  36. }
  37. },
  38. devtool: 'source-map'
  39. };
  40. const examples = ['assembly','uniprot','structural-alignment'];
  41. const entries = examples.reduce((prev,current)=>{prev[current]=`./src/examples/${current}/index.ts`;return prev;},{});
  42. const server = {
  43. ...commonConfig,
  44. entry: entries,
  45. devServer: {
  46. compress: true,
  47. port: 9000,
  48. },
  49. plugins: Object.keys(entries).map(key=>new HtmlWebpackPlugin({
  50. filename:`${key}.html`,
  51. template:'./src/examples/html-template/index.html',
  52. inject: true,
  53. chunks:[key]
  54. }))
  55. }
  56. module.exports = [server];