React Webpack Setup From Scratch

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ก.ค. 2024
  • In this tutorial, I’ll show you how to create a React Webpack setup from scratch, using Babel to load JS and JSX files as well as taking care of compiling Sass files.
    Completed code on GitHub: github.com/codebubb/react-web...
    React Webpack Setup From Scratch
    -------------------------------------------------
    00:00 Introduction
    00:37 Setup
    04:46 React Webpack config (React, webpack, babel)
    08:27 React Source files
    13:17 Starting web pack
    16:29 React Webpack production build
    17:45 Optimisations / Plugins
    20:28 Conclusion
    - Follow Me -
    Twitter: / codebubb
    Facebook: / juniordevelopercentral
    Blog: www.juniordevelopercentral.com/
    - Thanks! -
    So in this React Webpack setup tutorial, we’ll be creating a simple React component and demonstrating how this could be rendered in the browser by compiling all of the React and Sass code into a bundle that can be easily used in the browser.
    You can obviously setup a React very quickly with other tools but an alternative to create-react-app and similar is to create your own configuration for React Webpack from scratch.
    I’ll cover all the dependencies that are necessary to do this in the project and also we’ll look at how to create a React web pack production build so that you have production ready files that you could distribute to your hosting provider.
    I will also cover how to have a React web pack SCSS configuration setup to handle you Sass files.
    Before wrapping up, I’ll show you how you can add your own plugins and optimisations to your React webpack setup using plugins.
    react webpack, react webpack babel 2020, react webpack production build, react webpack setup from scratch, react webpack code splitting, react webpack 2020, react webpack scss, react webpack from scratch, react webpack setup, react, webpack, tutorial, webpack tutorial Channel Handle @codebubb
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 133

  • @shreyageek
    @shreyageek 2 ปีที่แล้ว

    Awesome.After searching entire day I got the best webpack explaination. Thanks

  • @MrSanchezTheDev
    @MrSanchezTheDev 2 ปีที่แล้ว

    Thank you! I've been going through tutorial after tutorial for the past 48 ish hours and wish I initially came across this.

  • @paulnnamdi4098
    @paulnnamdi4098 2 ปีที่แล้ว +9

    Best tutorial ever I have encountered on this topic! I have been frustrated many nights but this tutorial within one hour laid everything bare for me. I can now take it from here. Thanks.

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว +1

      Cheers Paul! Glad it helped you out!

  • @joshuadavis3879
    @joshuadavis3879 2 ปีที่แล้ว +1

    Clear and concise. Thank you!

  • @teodorcristiansolca7653
    @teodorcristiansolca7653 2 ปีที่แล้ว

    Thank you very much! I think this is the best video on webpack so far 👍

  • @georgecaplan11
    @georgecaplan11 3 ปีที่แล้ว +6

    Thanks very much for this tutorial. I am a react learner and this was by far a really good tutorial to get me up and using webpack. It seems like a lot of paid for tutorials have difficulties with webpack configurations. I wont name a couple I have done where everything comes to a halt because the tutorial is out of date for webapck configuration or not configured correctly. I really appreciated your tutorial and really appreciated your clear precise and concise explanations for the files and the code. This is my first time to your channel and I am now a subscriber and I will definitely watch your other videos. Thanks again.

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว +1

      Ah, thank you so much for your feedback George! Yes, that's the problem with some technologies - they get updated and become out of date so quickly. Glad you enjoyed the tutorial and glad to have you with us!

  • @michaelcarnevale5620
    @michaelcarnevale5620 3 ปีที่แล้ว +6

    the way you talk through what you're doing is the best i've seen for youtube coding videos imo

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      Ah, thanks very much Michael - appreciate the feedback 😀

  • @adityabhadange1631
    @adityabhadange1631 ปีที่แล้ว

    Thanks alot.. Very helpful!

  • @m.alvyekafauzi6594
    @m.alvyekafauzi6594 ปีที่แล้ว

    best tutorial, thanks codebudd!

  • @mrigankabora4835
    @mrigankabora4835 2 ปีที่แล้ว +1

    Everything crystal clear... awesome work❤️

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Thank you very much 😀

  • @tomascarignano5002
    @tomascarignano5002 2 ปีที่แล้ว +3

    Man seriously, thank you. You explain so well.

  • @mehemmedkazimzade2730
    @mehemmedkazimzade2730 ปีที่แล้ว

    Very helpful Thank you.

  • @Dominik3332
    @Dominik3332 ปีที่แล้ว

    super useful! Thanks

  • @lePrrrrr
    @lePrrrrr 2 ปีที่แล้ว

    Really cool. Thank you!

  • @J6Snipe
    @J6Snipe 3 ปีที่แล้ว +1

    Thanks James! Exactly what I was looking for

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      Thanks Jade, glad it helped you out! Are you building anything exciting?

  • @stephenmoran2427
    @stephenmoran2427 2 ปีที่แล้ว

    Thanks so much, this video is amazing!!

  • @martingeldart386
    @martingeldart386 ปีที่แล้ว +2

    It's Christmas Eve and I'm going to have a shot for every time he says 'actual' or 'actually' 😵‍💫

  • @coolme7437
    @coolme7437 6 หลายเดือนก่อน +1

    Thanks for creating this tutorial

    • @codewithbubb
      @codewithbubb  6 หลายเดือนก่อน

      No probs. Might be a bit out of date now...

  • @brunofilgueiras3518
    @brunofilgueiras3518 3 ปีที่แล้ว +2

    man, what a clean explanation thanks buddy

  • @user-if5fj8tb7f
    @user-if5fj8tb7f 2 ปีที่แล้ว

    Thank you very much! Your video helped me a lot!😆😆

  • @lucachang4178
    @lucachang4178 2 ปีที่แล้ว +1

    awesome video! it's life saving, wish there could be more videos like this

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Wow! Thanks Luca! Appreciate the feedback 👍

  • @thewishmastur
    @thewishmastur ปีที่แล้ว +1

    Excellent tutorial. Thank you

    • @codewithbubb
      @codewithbubb  ปีที่แล้ว

      Glad it was helpful! What are you learning next?

  • @sunilprajapat3660
    @sunilprajapat3660 3 ปีที่แล้ว +3

    Thank you for getting me started on webpack.

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      No problem Sunil, it can be quite confusing at first. Are you building something with React?

    • @sunilprajapat3660
      @sunilprajapat3660 3 ปีที่แล้ว

      @@codewithbubb Yes I am learning React right now

  • @rithikagarwal5799
    @rithikagarwal5799 11 หลายเดือนก่อน

    Great Video

  • @potionsmeller313
    @potionsmeller313 2 ปีที่แล้ว +1

    beautifully explained, thank you

  • @nareshgotte2251
    @nareshgotte2251 2 ปีที่แล้ว

    Best video of webpack

  • @historymobile6210
    @historymobile6210 3 ปีที่แล้ว +1

    amazing tutorial for starters. keep it up

  • @nidzeksmocni659
    @nidzeksmocni659 3 ปีที่แล้ว +1

    I appreciate your effort! Thank you sir!

  • @surajdedhia9584
    @surajdedhia9584 2 ปีที่แล้ว +2

    Thank you Sir. Really useful tutorial it was 😀

  • @JavaScriptcher
    @JavaScriptcher 2 ปีที่แล้ว

    Thanks, MAn!! Its working!! :)))

  • @gopalwebdev
    @gopalwebdev 3 ปีที่แล้ว +1

    Love you bro :)
    It works fine!

  • @kikevanegazz325
    @kikevanegazz325 2 ปีที่แล้ว +1

    Amazing, thank you!

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Thanks for your support!

  • @ankitmehrotra8519
    @ankitmehrotra8519 3 ปีที่แล้ว +1

    Great Video.. Just wanted to add that webpack will run loader in reverse order . Sass-loader converts to css file , which css-loader with turns to javascript and then style-loader will add that to the link tag in our main html file.

  • @omarakki705
    @omarakki705 2 ปีที่แล้ว +1

    best tuto, big thanks

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      No problem, glad you liked it 👍

  • @peter-qc9yi
    @peter-qc9yi 2 ปีที่แล้ว

    thank you very much for this. was helpful. even though i had to do alot of googling to the webpack and webpack-dev-serve to work

  • @markanthonyatienza1938
    @markanthonyatienza1938 ปีที่แล้ว +1

    Very well said! :) thank you

  • @reactstack257
    @reactstack257 2 ปีที่แล้ว +4

    Thank you for great tutorial ,
    I would like to mention that the setting for jsx is not working (this will throw an error for the module is not found)
    -webpack file need a :
    resolve: { extensions: [".js", ".jsx"], }.
    - instead of "watchBaseContet" at devServer I added hot: true , open: true
    Thanks again :)

  • @wesley_james_strength
    @wesley_james_strength ปีที่แล้ว +1

    Thanks so much.

  • @masterwayne9790
    @masterwayne9790 2 ปีที่แล้ว +1

    Thank you so much

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      No problem, hope you found it useful.

  • @Finite8614
    @Finite8614 2 ปีที่แล้ว +4

    absolutely fantastic tutorial. JS feels needlessly complex compared to Rails. I wish JS devs would bake in generators that were more flexible than CRA

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Cheers! Appreciate your support!

  • @arcadan
    @arcadan 2 ปีที่แล้ว

    First, congrats for the video, and thanks for your colab for our community!
    I just have one question, how would I add this Br or Gzip technics on a existing project create by CRA? Is it possible? Would adding webpack.config.js file work? Thanks!

  • @TheRealNVT
    @TheRealNVT 2 ปีที่แล้ว

    Where was this tutorial 2 weeks ago!!! Thanks...

  • @sangtran1410
    @sangtran1410 2 ปีที่แล้ว

    Great video !
    But I have a case need your advise:
    When I make some javascript error, the page will show the error but when i solved it, the page doesn't hot reload and I need to run manual. What should I do to auto reload ?

  • @sunnypathak4224
    @sunnypathak4224 3 ปีที่แล้ว

    Thank you! Can you please suggest any way, to serve this app without webpack-dev-server

  • @gbadspcps2
    @gbadspcps2 ปีที่แล้ว

    I found your tutorial helpful, but I'm having trouble getting multiple different HTML pages to work. How would I change webpack config.js to accommodate multiple pages for my website?

  • @fullstackprojects5615
    @fullstackprojects5615 3 ปีที่แล้ว

    At 3:45 you mentioned file-loader is used to import html to our overall output whereas I know that file-loader is used to resolve import/require of files like images. Wondering why you mentioned html import?

  • @aidarousjibril6323
    @aidarousjibril6323 ปีที่แล้ว

    What about if application was created with 'npx create-react-app myApp', How to configure webpack config file if i got a new mac laptop, it logs on the browser 'bundle.js' not the actual file name ?

  • @mikewilliams6732
    @mikewilliams6732 2 ปีที่แล้ว

    Great tutorial. It worked fine locally, but how do you deploy it - and run it - on, say Heroku.

  • @piyushkanathe9178
    @piyushkanathe9178 2 ปีที่แล้ว

    Hi James, I started implemeting with this video. I'm getting error at 14:22, when we first do 'npm run serve', as instructed i installed dev-seerver-package also. in the end I'm getting error at "ReactDOM.render(, appElement)" line, saying "You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.". but I configured as video suggested for JS files.

  • @StickMan1316
    @StickMan1316 2 ปีที่แล้ว

    for me the property watchContentBase is unknown to the webpack-cli my version of webpack-cli is 4.9.2 what property replaces watchContentBase

  • @ashish2038
    @ashish2038 2 ปีที่แล้ว

    If we run it locally, it make build slow as it makes first complete web pack , any way to make it fast to run locally, like normal npm start when we create a app and make a small change it loads immediately but in this case it take lot of time to run locally

  • @3rd_iimpact
    @3rd_iimpact 2 ปีที่แล้ว

    Great tutorial! Do companies ever push the create-react-app to production? Or do they always build it out from scratch like this?

    • @malikmubasherhassan
      @malikmubasherhassan 2 ปีที่แล้ว +1

      why to configure webpack like this? when we have webpack out of the box when creating app using creat-react-app

  • @dumadoniagarasambora675
    @dumadoniagarasambora675 2 ปีที่แล้ว

    can you guys help me, I can't install webpack-dev-server. Loading bar never running when I type commad npm install webpack-dev-server or npm run serve and type Y to install webpack-dev-server.

  • @wittttttt
    @wittttttt 3 ปีที่แล้ว +1

    Great video! I have a question, If I want to use styled-components, do I still need "style-loader" or "css-loader"?

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      Great question! I haven't used styled components much to be honest but as far as I know, it's just a JavaScript library so it shouldn't need to have any additional config in webpack. I saw this in their docs but it's just really for server-side rendering: styled-components.com/docs/tooling

    • @wittttttt
      @wittttttt 3 ปีที่แล้ว

      @@codewithbubb Thanks!

  • @Manojshankar36
    @Manojshankar36 2 ปีที่แล้ว

    Nice tutorial.
    A small query, I am trying to update webpack-dev-server to “^4.7.3” but I am unable to start the application and ended up in some errors. Can you please help me with upgrading webpack-dev-server to “^4.7..3”
    Thanks & Appreciate it

  • @sudheeshm5248
    @sudheeshm5248 2 ปีที่แล้ว

    Error:
    [Webpack-cli] failed to load webpack.config.js config
    [Webpack-cli] referenceerror:_dirname Is not defined

  • @TheRonron1994
    @TheRonron1994 2 ปีที่แล้ว

    I was getting this error while trying to run npm run serve
    "options has an unknown property 'watchContentBase'. These properties are valid:"
    Any idea?

    • @michaelrooze278
      @michaelrooze278 2 ปีที่แล้ว

      devServer: {
      port: 3000,
      open: true,
      hot: true,
      },

  • @indrasen9617
    @indrasen9617 2 ปีที่แล้ว +1

    replace watchContentBase with static if you get this error : "Invalid options object. Dev Server has been initialized using an options object that does not match the API schema."

  • @razac_zr
    @razac_zr 2 ปีที่แล้ว +1

    Thank you for this tutorial, Can you please tell me how webpack with tailwind CSS,

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      You’re welcome.
      Yes. Yes I can: How To Add Tailwind To a React app
      th-cam.com/video/kyjmpeBbtPg/w-d-xo.html

  • @jackblk4
    @jackblk4 2 ปีที่แล้ว +2

    Nice tutorial, very helpful.
    I use HtmlWebpackPlugin, it will generate HTML file for us so that we don't need to manually add script or CSS into HTML file like the example. If we need something, it will add for us.

    • @szymongos5568
      @szymongos5568 2 ปีที่แล้ว

      Same here. HTMLWebpackPlugin makes it easier to inject index.js into the index.html. Just in case I added, "inject: body".

  • @d1hoops975
    @d1hoops975 3 ปีที่แล้ว

    can you please do a nextjs version of this please?

  • @sams1669
    @sams1669 3 ปีที่แล้ว

    please help! getting this error.
    [webpack-cli] Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
    - configuration has an unknown property 'Plugins'. These properties are valid:
    object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry?, experiments?, externals?, externalsPresets?, externalsType?, ignoreWarnings?, infrastructureLogging?, loader?, mode?, module?, name?, node?, optimization?, output?, parallelism?, performance?, plugins?, profile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, snapshot?, stats?, target?, watch?, watchOptions? }
    -> Options object as provided by the user.
    For typos: please correct them.
    For loader options: webpack >= v2.0.0 no longer allows custom properties in configuration.
    Loaders should be updated to allow passing options via loader options in module.rules.
    Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:
    plugins: [
    new webpack.LoaderOptionsPlugin({
    // test: /\.xxx$/, // may apply this only for some modules
    options: {
    Plugins: …
    }
    })
    ]

  • @philipkoller5173
    @philipkoller5173 ปีที่แล้ว

    For watchContentBase error
    just takeout the entire property as it is already enabled by default in newer versions of webpack
    devServer: {
    port: 3010,
    },

  • @shekhar_sahu
    @shekhar_sahu 2 ปีที่แล้ว +1

    The webpack-cli gives an error 'watchContentBase' as an unknown option. Not sure how to solve this.

    • @octabrg
      @octabrg 2 ปีที่แล้ว +1

      Hi, change it with this one `watchFiles: ['src/**/*', 'public/**/*']`. You probably have last version of webpack, that's why you have that error

  • @user-zf7oh5iv3l
    @user-zf7oh5iv3l 2 ปีที่แล้ว +1

    thank you so much. i,m from russian federation and my english isn't perfect) but your video help me to understand

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Great! Glad you found it useful!

  • @dumchik7290
    @dumchik7290 2 ปีที่แล้ว

    file-loader is deprecated in webpack5. pls make a new video with webpack 5

  • @abhishek3543
    @abhishek3543 2 ปีที่แล้ว +1

    Will this also work with react native ?

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      No idea! I would think not though.

  • @VishalYadav-nm6xx
    @VishalYadav-nm6xx 2 ปีที่แล้ว +1

    this is a really good tutorial but i still cannot see anything on the webpage like in this example date was on the homepage .. my homepage comes blank .. i have checked the app.js file and everything still no luck .. the html page is loaded correctly and the bundle is also loaded but the bundle seams to be empty because no content is displayed on the screen .. can anyone help

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Do you have any errors in your console?

  • @sandormaraczy6122
    @sandormaraczy6122 2 ปีที่แล้ว +1

    I did everything the same, but keep getting this error:
    ERROR in ./src/index.js
    Module build failed (from ./node_modules/babel-loader/lib/index.js):
    Error: Cannot find module '@babel/preset-env, @babel/preset-react'

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Did you npm install @babel/preset-env @babel/preset-react ?

    • @sandormaraczy6122
      @sandormaraczy6122 2 ปีที่แล้ว

      @@codewithbubb Thank you for your quick reply! Yes I did, but unfortunately the problem remains.
      I did not find any solutions for that, I also tried out to utilise exactly the same versions from the mentioned packages that you did, but still did not resolve my issue:(

  • @harmmeijer6582
    @harmmeijer6582 2 ปีที่แล้ว

    Whats wrong with using npx create-react-app ?

    • @michaelrooze278
      @michaelrooze278 2 ปีที่แล้ว +1

      nothing but you may not want all the features that comes with the default webpack package. This allows you to use only what you need, resulting in a more efficient environment.

  • @havefun5519
    @havefun5519 ปีที่แล้ว

    Cool tut. Thanks.
    For webpack v5 slight update
    devServer: {
    static: {
    directory: path.join(__dirname, 'public'),
    },
    compress: true,
    port: ,
    },

  • @jayeshthanvi1115
    @jayeshthanvi1115 3 ปีที่แล้ว +3

    Npm run build ? Not working .sir please replay?

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว +2

      Sorry for the late reply. Did you install all the dependencies (i.e. npm install)? What error are you getting?

    • @jayeshthanvi1115
      @jayeshthanvi1115 3 ปีที่แล้ว +3

      @@codewithbubb thank you for replay but error resolved

    • @klhmia
      @klhmia 3 ปีที่แล้ว +2

      @@jayeshthanvi1115 Mind sharing your error / fix? I'm having Exit status 1 on webpack --mode production with 'npm run build' command but not sure why. Dependencies are all correct.
      EDIT: Nvm, it was an issue within my webpack.config.js I believe.

  • @tomascarignano5002
    @tomascarignano5002 2 ปีที่แล้ว

    Super super useful. Thank you!

  • @MuhammadAdnan2.0
    @MuhammadAdnan2.0 3 ปีที่แล้ว +2

    sir please start Vue.Js Series its easy to learn ,,,,,,,,,,,,

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว +2

      Funny you should say that - I started learning it the other day!😀

    • @MuhammadAdnan2.0
      @MuhammadAdnan2.0 3 ปีที่แล้ว +1

      @@codewithbubb 🙄😊

  • @BobbyBundlez
    @BobbyBundlez 3 ปีที่แล้ว +1

    have a take home assignment for a job due next week... anyone here down to help me/tutor me through some questions? willing to pay!

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      What's the assignment?

    • @BobbyBundlez
      @BobbyBundlez 3 ปีที่แล้ว

      @@codewithbubb i need to recreate a design from envision (im used to figma) but im new to webpack. this tutorial helped me ALOT but do you mind if i message u with a question or two?

  • @BobbyBundlez
    @BobbyBundlez 3 ปีที่แล้ว +1

    also wtf. i never knew u could make a react app with just "npm install react" lol.... wayyy lighter tf

    • @codewithbubb
      @codewithbubb  3 ปีที่แล้ว

      Yep, I guess you were using create-react-app before?

    • @BobbyBundlez
      @BobbyBundlez 3 ปีที่แล้ว +1

      @@codewithbubb yeah lol so this does the same thing?

    • @BobbyBundlez
      @BobbyBundlez 3 ปีที่แล้ว

      Also wondering if this method is better for web pack too or doesn’t matter

  • @Michael-Martell
    @Michael-Martell 2 ปีที่แล้ว +5

    thanks man, this setup has been killing me! This tutorial ir perfect. My only thing is: under the module.exports, make sure it reads: output: {
    path: path.join(__dirname, '/dist'),
    filename: 'index.bundle.js',
    },
    devServer: {
    port: 3000,
    open: true,
    hot: true,
    },

    • @codewithbubb
      @codewithbubb  2 ปีที่แล้ว

      Great, thanks for the feedback 👍

  • @johnbangla100
    @johnbangla100 2 ปีที่แล้ว

    Finally this code i have added ""start": "cross-env BABEL_ENV=default webpack --watch"" in package.json file. otherwise error found.

    • @johnbangla100
      @johnbangla100 2 ปีที่แล้ว

      Also install npm install cross-env

  • @rashad123us
    @rashad123us 2 ปีที่แล้ว +3

    webpack is telling me 'watchContentBase' in an unknown property, was this property deprecated/replaced?

    • @eduardoflores1603
      @eduardoflores1603 2 ปีที่แล้ว

      make sure that you have the following in your package json file under devDependencies. I installed the newest one and it gave me the error. Updating it to below worked for me!
      "webpack-dev-server": "^3.11.2"