const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const WasmPackPlugin = require('@wasm-tool/wasm-pack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const path = require('path'); const fs = require('fs'); module.exports = (env = {}) => { const config = { entry: './src/index.js', output: { path: path.join(__dirname, 'dist'), filename: 'index.js' }, mode: 'development', resolve: { alias: { rustpython: path.resolve( __dirname, env.rustpythonPkg || '../lib/pkg' ) } }, module: { rules: [ { test: /\.css$/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }, { test: /\.(woff(2)?|ttf)$/, use: { loader:"file-loader", options: { name: "fonts/[name].[ext]" } }, } ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ filename: 'index.html', template: 'src/index.ejs', // templateParameters: { // snippets: fs // .readdirSync(path.join(__dirname, 'snippets')) // .map(filename => // path.basename(filename, path.extname(filename)) // ), // defaultSnippetName: 'fibonacci', // defaultSnippet: fs.readFileSync( // path.join(__dirname, 'snippets/fibonacci.py') // ) // } }), new MiniCssExtractPlugin({ filename: 'styles.css' }), ] }; if (!env.noWasmPack) { config.plugins.push( new WasmPackPlugin({ crateDirectory: path.join(__dirname, '../lib'), forceMode: 'release' }) ); } return config; };