webpack.config.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. var path = require('path');
  2. var HtmlWebpackPlugin = require('html-webpack-plugin');
  3. var UpdateVersionPlugin = require('./updateVersionPlugin');
  4. //var ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin');
  5. var CopyPlugin = require('copy-webpack-plugin');
  6. var 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. },
  39. stats: {
  40. colors: true
  41. },
  42. plugins: [
  43. new CleanWebpackPlugin({
  44. cleanOnceBeforeBuildPatterns:[path.resolve(__dirname, 'build/**/*')],
  45. watch: true
  46. }),
  47. new UpdateVersionPlugin(),
  48. new HtmlWebpackPlugin({
  49. template: 'templates/index.html',
  50. filename: path.resolve(__dirname, 'build', 'index.html')
  51. }),
  52. new HtmlWebpackPlugin({
  53. template: 'templates/runner.html',
  54. filename: path.resolve(__dirname, 'build', 'runner.html')
  55. }),
  56. /*new ChangeScriptSourcePlugin(),*/
  57. new CopyPlugin([
  58. {from:"js/semantic/", to:path.resolve(__dirname, 'build/css')},
  59. {from:"css/ivprog-visual-1.0.css", to:path.resolve(__dirname, 'build/css')},
  60. {from:"css/ivprog-term.css", to:path.resolve(__dirname, 'build/css')},
  61. {from:'js/jquery-3.3.1.min.js', to:path.resolve(__dirname, 'build/js')},
  62. {from:'js/semantic/semantic.min.js', to:path.resolve(__dirname, 'build/js')},
  63. {from:'js/semantic/semantic-buttons.js', to:path.resolve(__dirname, 'build/js')},
  64. {from:'js/jquery-ui.js', to:path.resolve(__dirname, 'build/js')},
  65. {from:'js/Sortable.js', to:path.resolve(__dirname, 'build/js')},
  66. {from:'js/iassign-integration-functions.js', to:path.resolve(__dirname, 'build/js')},
  67. /*{from:'index.html', to:path.resolve(__dirname, 'build')},
  68. {from:'runner.html', to:path.resolve(__dirname, 'build')},*/
  69. ])
  70. ],
  71. optimization: {
  72. splitChunks: {
  73. chunks: 'all'
  74. }
  75. },
  76. devtool: 'source-map',
  77. watchOptions: {
  78. ignored: [
  79. path.resolve(__dirname, '.ima_version.json'),
  80. path.resolve(__dirname, 'index.html'),
  81. path.resolve(__dirname, 'runner.html')
  82. ]
  83. }
  84. };