var path = require('path'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var UpdateVersionPlugin = require('./updateVersionPlugin'); //var ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin'); var CopyPlugin = require('copy-webpack-plugin'); var CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { entry: path.resolve(__dirname, 'js/main.js'), output: { path: path.resolve(__dirname, 'build',"js"), filename: '[name].[contenthash].js', library: 'ivprogCore', libraryTarget: 'umd' }, node: { fs: 'empty', }, module: { rules: [ { test: /\.js$/, exclude: /(node_modules)/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env"] } } }, { test: /\.g4$/, exclude: /(node_modules)/, use: { loader:'antlr4-webpack-loader' } }, { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ } ] }, resolve: { extensions: [ '.tsx', '.ts', '.js' ] }, stats: { colors: true }, plugins: [ new CleanWebpackPlugin({ cleanOnceBeforeBuildPatterns:[path.resolve(__dirname, 'build/**/*')], watch: true }), new UpdateVersionPlugin(), new HtmlWebpackPlugin({ template: 'templates/index.html', filename: path.resolve(__dirname, 'build', 'index.html') }), new HtmlWebpackPlugin({ template: 'templates/runner.html', filename: path.resolve(__dirname, 'build', 'runner.html') }), /*new ChangeScriptSourcePlugin(),*/ new CopyPlugin([ {from:'js/iassign-integration-functions.js', to:path.resolve(__dirname, 'build/js')}, {from:"css/ivprog-visual-1.0.css", to:path.resolve(__dirname, 'build/css')}, {from:"css/ivprog-term.css", to:path.resolve(__dirname, 'build/css')}, {from:"css/ivprog-assessment.css", to:path.resolve(__dirname, 'build/css')}, {from:"css/ivprog-editor.css", to:path.resolve(__dirname, 'build/css')}, {from:"css/roboto.css", to:path.resolve(__dirname, 'build/css')}, {from:"css/fonts/", to:path.resolve(__dirname, 'build/css/fonts')}, {from:'js/Sortable.js', to:path.resolve(__dirname, 'build/js')}, {from: 'img/trash-icon.png', to:path.resolve(__dirname, 'build/img')}, {from: 'img/empty.svg', to:path.resolve(__dirname, 'build/img')}, {from:'js/jquery.json-editor.min.js', to:path.resolve(__dirname, 'build/js')}, {from:'node_modules/codemirror/lib/codemirror.css', to:path.resolve(__dirname, 'build/css')}, {from:'node_modules/codemirror/addon/hint/show-hint.css', to:path.resolve(__dirname, 'build/css')}, {from:'node_modules/codemirror/theme/ttcn.css', to:path.resolve(__dirname, 'build/css')}, /*{from:'index.html', to:path.resolve(__dirname, 'build')}, {from:'runner.html', to:path.resolve(__dirname, 'build')},*/ ]) ], optimization: { splitChunks: { chunks: 'all' } }, devtool: 'source-map', watchOptions: { ignored: [ path.resolve(__dirname, '.ima_version.json'), ] } };