const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
// const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
module.exports = {
// mode: 'development', //'mode' option to 'development' or 'production'
entry: './src/js/main.js',
output: {
path: __dirname + '/dist/',
filename: 'bundle.js'
},
devServer: {
inline: false,
contentBase: "./dist",
},
devtool: "cheap-module-source-map",
module: {
rules: [{
test: /\.ejs$/,
use: ['ejs-webpack-loader']
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
},
{
test: /\.tsx?$/,
use: ['vue-ts-loader']
},
{
test: /\.css$/,
use: ['vue-style-loader', 'style-loader', 'css-loader']
},
{
test: /\.scss$/,
use: [
"vue-style-loader",
"style-loader", // creates style nodes from JS strings
"css-loader", // translates CSS into CommonJS
"sass-loader" // compiles Sass to CSS, using Node Sass by default
]
},
{
test: /\.sass$/,
use: [
'vue-style-loader',
"style-loader",
'css-loader',
{
loader: 'sass-loader',
options: {
indentedSyntax: true
}
}
]
},
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
plugins: [
new webpack.ProvidePlugin({
moment: "moment",
$: "jquery",
jQuery: "jquery",
Vue: ['vue/dist/vue.esm.js', 'default']
}),
// new VueLoaderPlugin(),
new HtmlWebpackPlugin({
template: '!!ejs-webpack-loader!./src/index.ejs',
inject: 'body'
}),
new MonacoWebpackPlugin()
]
}