mirror of
https://github.com/penpot/penpot-exporter-figma-plugin.git
synced 2024-12-22 13:43:03 -05:00
64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
|
const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');
|
||
|
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||
|
|
||
|
const path = require('path')
|
||
|
const webpack = require('webpack')
|
||
|
|
||
|
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: {
|
||
|
ui: './src/ui.tsx', // The entry point for your UI code
|
||
|
code: './src/code.ts', // The entry point for your plugin code
|
||
|
},
|
||
|
|
||
|
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$/,
|
||
|
use: ["style-loader", "css-loader"],
|
||
|
},
|
||
|
// 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'"
|
||
|
resolve: { extensions: ['.tsx', '.ts', '.jsx', '.js'] ,
|
||
|
fallback: { "crypto": false }},
|
||
|
|
||
|
output: {
|
||
|
filename: '[name].js',
|
||
|
path: path.resolve(__dirname, 'dist'), // Compile into a folder called "dist"
|
||
|
},
|
||
|
|
||
|
// Tells Webpack to generate "ui.html" and to inline "ui.ts" into it
|
||
|
plugins: [
|
||
|
new webpack.DefinePlugin({
|
||
|
'global': {} // Fix missing symbol error when running in developer VM
|
||
|
}),
|
||
|
new HtmlWebpackPlugin({
|
||
|
inject: "body",
|
||
|
template: './src/ui.html',
|
||
|
filename: 'ui.html',
|
||
|
chunks: ['ui']
|
||
|
}),
|
||
|
new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/ui/]),
|
||
|
],
|
||
|
})
|