2024-04-08 04:43:30 -05:00
|
|
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
2022-10-11 08:55:08 -05:00
|
|
|
|
2024-04-08 04:43:30 -05:00
|
|
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
|
|
const path = require('path');
|
|
|
|
const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');
|
|
|
|
const webpack = require('webpack');
|
2022-10-11 08:55:08 -05:00
|
|
|
|
|
|
|
module.exports = (env, argv) => ({
|
|
|
|
mode: argv.mode === 'production' ? 'production' : 'development',
|
|
|
|
|
|
|
|
// This is necessary because Figma's 'eval' works differently than normal eval
|
|
|
|
devtool: argv.mode === 'production' ? false : 'inline-source-map',
|
|
|
|
|
|
|
|
entry: {
|
2024-04-08 11:04:11 -05:00
|
|
|
ui: './src/ui/ui.tsx', // The entry point for your UI code
|
|
|
|
code: './src/plugin/code.ts' // The entry point for your plugin code
|
2022-10-11 08:55:08 -05:00
|
|
|
},
|
|
|
|
|
|
|
|
module: {
|
|
|
|
rules: [
|
|
|
|
// Converts TypeScript code to JavaScript
|
|
|
|
{
|
|
|
|
test: /\.tsx?$/,
|
|
|
|
use: 'ts-loader',
|
|
|
|
exclude: /node_modules/
|
|
|
|
},
|
|
|
|
|
|
|
|
// Enables including CSS by doing "import './file.css'" in your TypeScript code
|
|
|
|
{
|
|
|
|
test: /\.css$/,
|
2024-04-08 04:43:30 -05:00
|
|
|
use: ['style-loader', 'css-loader']
|
2022-10-11 08:55:08 -05:00
|
|
|
},
|
|
|
|
// Allows you to use "<%= require('./file.svg') %>" in your HTML code to get a data URI
|
|
|
|
// { test: /\.(png|jpg|gif|webp|svg|zip)$/, loader: [{ loader: 'url-loader' }] }
|
|
|
|
{
|
|
|
|
test: /\.svg/,
|
|
|
|
type: 'asset/inline'
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
// Webpack tries these extensions for you if you omit the extension like "import './file'"
|
2024-04-08 04:43:30 -05:00
|
|
|
resolve: { extensions: ['.tsx', '.ts', '.jsx', '.js'], fallback: { crypto: false } },
|
2022-10-11 08:55:08 -05:00
|
|
|
|
|
|
|
output: {
|
|
|
|
filename: '[name].js',
|
2024-04-08 04:43:30 -05:00
|
|
|
path: path.resolve(__dirname, 'dist') // Compile into a folder called "dist"
|
2022-10-11 08:55:08 -05:00
|
|
|
},
|
|
|
|
|
|
|
|
// Tells Webpack to generate "ui.html" and to inline "ui.ts" into it
|
|
|
|
plugins: [
|
|
|
|
new webpack.DefinePlugin({
|
2024-04-08 04:43:30 -05:00
|
|
|
global: {} // Fix missing symbol error when running in developer VM
|
2022-10-11 08:55:08 -05:00
|
|
|
}),
|
|
|
|
new HtmlWebpackPlugin({
|
2024-04-08 04:43:30 -05:00
|
|
|
inject: 'body',
|
2024-04-08 11:04:11 -05:00
|
|
|
template: './src/ui/ui.html',
|
2022-10-11 08:55:08 -05:00
|
|
|
filename: 'ui.html',
|
|
|
|
chunks: ['ui']
|
|
|
|
}),
|
2024-04-08 04:43:30 -05:00
|
|
|
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/ui/])
|
|
|
|
]
|
|
|
|
});
|