1

I am using webpack version 5.46 and trying to bundle inline js code into my .html file. All I found is plugins, that are not working anymore or have no compatibility with the current webpack version. At the current moment my output is:

<head><script defer="defer" src="ui.js"></script></head><div id="react-page"></div>

But here is what I want:

<div id="react-page"></div><script >console.log('here is my code directly in the .html file!')</script>

webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin')
const path = require('path')

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', { 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)$/, loader: 'url-loader' },
        ],
    },

    output: {
        clean: true,
        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 HtmlWebpackPlugin({
            template: './src/ui.html',
            filename: 'ui.html',
            inlineSource: '.(js)$',
            chunks: ['ui'],
        })
    ]
})

Any plugins for webpack supported for this purposes?

P.S. I am creating a figma plugin and here they used an outdated library, but figma requires all the content to be in the one file directly

7
  • I'd suggest looking at this question, although the proper answer has a comment it doesn't work anymore, while the others might not be ideal. Commented Jul 24, 2021 at 18:30
  • @KelvinSchoofs accepted answer is outdated & not working with the current version, second answer I tried 10 minutes ago and it bundles the same variant as I have now, third is deprecated. Commented Jul 24, 2021 at 18:31
  • That's why I placed it as a comment instead of just flagging your question as a duplicate. I noticed that it might indeed not work anymore, but you could still test it. After all, the outdated answer's comment mentions a version incompatibility, which might've been resolved by now. I'm kinda surprised the React variant doesn't work, but to be fair, I've never consciously used it. Commented Jul 24, 2021 at 18:36
  • Did you ever get an answer to this? I'm also looking at a Figma plugin (Finding out how to build angular into a single html file!) Commented Nov 13, 2022 at 14:40
  • @Baffour nope, I didn't.. I wasn't googling more than a day. I think that there is some way - probably using deprecated stuff.. but not sure about that. I did it by hands because it wasn't a big problem so it was the fastest way. What I would do now - write a script that first runs the build and then insert inline generated script. Using python or node.js Commented Nov 14, 2022 at 15:42

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.