webpack.config.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. const UpdateVersionPlugin = require('./updateVersionPlugin');
  4. //const ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin');
  5. const CopyPlugin = require('copy-webpack-plugin');
  6. const CleanWebpackPlugin = require('clean-webpack-plugin');
  7. module.exports = {
  8. entry: path.resolve(__dirname, 'js/main.js'),
  9. output: {
  10. path: path.resolve(__dirname, 'build',"js"),
  11. filename: '[name].[contenthash].js',
  12. library: 'ivprogCore',
  13. libraryTarget: 'umd'
  14. },
  15. node: {
  16. fs: 'empty',
  17. },
  18. module: {
  19. rules: [
  20. {
  21. test: /\.js$/,
  22. exclude: /(node_modules)/,
  23. use: {
  24. loader: "babel-loader",
  25. options: {
  26. presets: ["@babel/preset-env"]
  27. }
  28. }
  29. },
  30. {
  31. test: /\.g4$/,
  32. exclude: /(node_modules)/,
  33. use: {
  34. loader:'antlr4-webpack-loader'
  35. }
  36. },
  37. {
  38. test: /\.tsx?$/,
  39. use: 'ts-loader',
  40. exclude: /node_modules/
  41. },
  42. {
  43. test: /\.csv$/,
  44. use: [
  45. {
  46. loader: path.resolve(__dirname, 'i18n_csv_loader')
  47. }
  48. ],
  49. exclude: /node_modules/
  50. }
  51. ]
  52. },
  53. resolve: {
  54. extensions: [ '.tsx', '.ts', '.js', '.csv' ]
  55. },
  56. stats: {
  57. colors: true
  58. },
  59. plugins: [
  60. new CleanWebpackPlugin({
  61. cleanOnceBeforeBuildPatterns:[path.resolve(__dirname, 'build/**/*')],
  62. watch: true
  63. }),
  64. new UpdateVersionPlugin(),
  65. new HtmlWebpackPlugin({
  66. template: 'templates/index.html',
  67. filename: path.resolve(__dirname, 'build', 'index.html')
  68. }),
  69. new HtmlWebpackPlugin({
  70. template: 'templates/runner.html',
  71. filename: path.resolve(__dirname, 'build', 'runner.html')
  72. }),
  73. /*new ChangeScriptSourcePlugin(),*/
  74. new CopyPlugin([
  75. {from:'js/iassign-integration-functions.js', to:path.resolve(__dirname, 'build/js')},
  76. {from:"css/ivprog-visual-1.0.css", to:path.resolve(__dirname, 'build/css')},
  77. {from:"css/ivprog-term.css", to:path.resolve(__dirname, 'build/css')},
  78. {from:"css/ivprog-assessment.css", to:path.resolve(__dirname, 'build/css')},
  79. {from:"css/ivprog-editor.css", to:path.resolve(__dirname, 'build/css')},
  80. {from:"css/roboto.css", to:path.resolve(__dirname, 'build/css')},
  81. {from:"css/fonts/", to:path.resolve(__dirname, 'build/css/fonts')},
  82. {from:'js/Sortable.js', to:path.resolve(__dirname, 'build/js')},
  83. {from: 'img/trash-icon.png', to:path.resolve(__dirname, 'build/img')},
  84. {from: 'img/empty.svg', to:path.resolve(__dirname, 'build/img')},
  85. {from:'js/jquery.json-editor.min.js', to:path.resolve(__dirname, 'build/js')},
  86. {from:'node_modules/codemirror/lib/codemirror.css', to:path.resolve(__dirname, 'build/css')},
  87. {from:'node_modules/codemirror/addon/hint/show-hint.css', to:path.resolve(__dirname, 'build/css')},
  88. {from:'node_modules/codemirror/theme/ttcn.css', to:path.resolve(__dirname, 'build/css')},
  89. /*{from:'index.html', to:path.resolve(__dirname, 'build')},
  90. {from:'runner.html', to:path.resolve(__dirname, 'build')},*/
  91. ])
  92. ],
  93. optimization: {
  94. splitChunks: {
  95. chunks: 'all'
  96. }
  97. },
  98. devtool: 'source-map',
  99. watchOptions: {
  100. ignored: [
  101. path.resolve(__dirname, '.ima_version.json'),
  102. ]
  103. }
  104. };