I'm setting up a new web app using react and its boilerplate the react-boilerplate. Now I want to add a public folder in the root that contains the index.html as well as the robot.txt .htaccess files and some external js libraries. Can someone please guide me through editing the webpack config files to make it behave like so.
Thanks in advance
To reference assets in the public folder, you need to use an environment variable called PUBLIC_URL . Only files inside the public folder will be accessible by %PUBLIC_URL% prefix.
There are 3 main approaches to store images in react app: src folder - Images stored in this directory will be included in the final bundle. Additionally, they have the added bonus of being able to be imported as a JavaScript module. public folder - Files in public directory will not be processed by Webpack.
The public folder contains static files such as index. html, javascript library files, images, and other assets, etc. which you don't want to be processed by webpack. Files in this folder are copied and pasted as they are directly into the build folder.
You could use copy-webpack-plugin to copy files from public folder to your build folder. Make the next steps to make it works:
npm i copy-webpack-plugin --save-dev
const path = require('path');
const webpack = require('webpack');
const CopyWebpackPlugin = require('copy-webpack-plugin'); <-- import plugin
module.exports = options => ({
...
plugins: options.plugins.concat([
...
new CopyWebpackPlugin([ <-- add plugin
{
from: 'public',
},
]),
]),
public
in your source root and all files from this folder will be copied to build
folder.IMPORTANT! You already have index.html which is generated from /app/index.html template by HtmlWebpackPlugin. If you created index.html in your public
folder, it could override generated one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With