const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const resolve = (url) => path.resolve(__dirname, "..", url); module.exports = { entry: { 'luckysheet-io': resolve("src/index.ts"), }, module: { rules: [ { test: /\.js$/, loader: 'esbuild-loader', options: { target: 'es2015' // Syntax to compile to (see options below for possible values) } }, { test: /\.ts$/, loader: 'esbuild-loader', options: { loader: 'ts', // Or 'ts' if you don't need tsx target: 'es2015', tsconfigRaw: require('../tsconfig.json') } }, { test: /\.css$/, use: [ { loader: MiniCssExtractPlugin.loader, options: { publicPath: '../', }, }, { loader: 'css-loader', }, ] }, { test: /\.less$/, use: [ { loader: MiniCssExtractPlugin.loader, options: { publicPath: '../', }, }, { loader: 'css-loader', }, { loader: 'less-loader', }, ] }, { test: /\.(png|svg|jpe?g|gif)$/i, use: [ { loader: 'url-loader', options: { limit: 18192, outputPath: 'img', name: '[name].[ext]?[hash]', esModule: false, }, }, ], type: "javascript/auto" }, { test: /\.(mp3|wav)$/i, use: [ { loader: 'file-loader', options: { outputPath: 'audio', esModule: false, }, }, ], type: "javascript/auto" }, { test: /\.(woff|woff2|eot|ttf|otf)$/i, use: [ { loader: 'file-loader', options: { outputPath: 'font', esModule: false, }, }, ], type: "javascript/auto" }, { test: /\.wasm$/, type: 'webassembly/async', }, ], }, resolve: { extensions: ['.ts', '.tsx', '.js', '.json'], alias: { '@': resolve('src'), }, }, experiments: { syncWebAssembly: true, asyncWebAssembly: true, topLevelAwait: true, } };