webpack.server.dev.config.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const HtmlWebpackPlugin = require('html-webpack-plugin');
  2. const fs = require('fs')
  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-tm', 'assembly','uniprot','structural-alignment','sequence-identity','single-chain','multiple-chain','alignment-provider'];
  41. //const examples = ['assembly-tm'];
  42. const entries = examples.reduce((prev,current)=>{
  43. prev[current]= fs.existsSync(`./src/examples/${current}/index.ts`) ? `./src/examples/${current}/index.ts` : `./src/examples/${current}/index.tsx`;
  44. return prev;
  45. },{});
  46. const server = {
  47. ...commonConfig,
  48. entry: entries,
  49. devServer: {
  50. compress: true,
  51. port: 9000,
  52. },
  53. plugins: Object.keys(entries).map(key=>new HtmlWebpackPlugin({
  54. filename:`${key}.html`,
  55. template:'./src/examples/html-template/index.html',
  56. inject: true,
  57. chunks:[key]
  58. }))
  59. }
  60. module.exports = [server];