var path = require('path');
const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
	css: {
		extract: {
			filename: '../styles/build.css'
		}
	},
	chainWebpack: config => {
		// Don't create an index.html file
		config.plugins.delete('html');
		config.plugins.delete('preload');
		config.plugins.delete('prefetch');

		// Don't copy the /public dir
		config.plugins.delete('copy');
	},
	configureWebpack: {
		// Don't create a map file for the js package
		devtool: false,
		entry: [
			'@/styles/_global.less',
			'./js/load.js'
		],
		optimization: {
			// Don't split vendor and app into separate JS files
			splitChunks: false
		},
		output: {
			filename: 'build.js',
			// Prevent lots of files from being created when running npm run dev
			hotUpdateChunkFilename: 'hot-updates/hot-update.js',
			hotUpdateMainFilename: 'hot-updates/hot-update.json'
		},
		plugins: [
			new CopyPlugin({
				patterns: [
					{
						from: 'lib/ui-library/public/styles/tinymce',
						to: '../lib/pkp/styles/tinymce'
					}
				]
			})
		],
		resolve: {
			alias: {
				'@': path.resolve(__dirname, 'lib/ui-library/src')
			}
		},
		watch: false
	},
	outputDir: path.resolve(__dirname, 'js'),
	runtimeCompiler: true,
	// Part of the vue2-dropzone library is not transpiled
	// as part of the normal build process, which results
	// in errors in < IE 11. This directive makes sure the
	// dependencies are included when babel transpiles code
	// See: https://github.com/rowanwins/vue-dropzone/issues/439
	// See: https://stackoverflow.com/a/58949645/1723499
	transpileDependencies: ['vue2-dropzone']
};