Setting up a Redux project from scratch involves configuring various tools that help in the development and build process. Two of the most critical tools in this process are Babel and Webpack. Babel is a JavaScript compiler that allows you to use next-generation JavaScript, including JSX, which is essential for React applications. Webpack is a module bundler that takes your JavaScript files and their dependencies and bundles them into a single file or a few files, which can be loaded by the browser.

When starting a Redux project, your first step is to initialize a new project directory. You can do this using npm (Node Package Manager) or Yarn. For this example, we’ll use npm:

mkdir redux-project
cd redux-project
npm init -y

This will create a new directory called redux-project and initialize it with a package.json file. The -y flag automatically answers 'yes' to all prompts, creating a default package configuration.

Installing Dependencies

With the project initialized, the next step is to install the necessary dependencies. For a Redux project, you need React, Redux, and React-Redux. Additionally, you need Babel and Webpack along with their respective plugins and loaders. Run the following command to install these dependencies:

npm install react react-dom redux react-redux
npm install --save-dev webpack webpack-cli webpack-dev-server babel-loader @babel/core @babel/preset-env @babel/preset-react

Here's a breakdown of the packages:

  • react and react-dom: The core React libraries.
  • redux: The Redux library for state management.
  • react-redux: Official React bindings for Redux.
  • webpack: The module bundler.
  • webpack-cli: Command-line interface for Webpack.
  • webpack-dev-server: Development server that provides live reloading.
  • babel-loader: Webpack loader for Babel, allowing you to transpile JavaScript files.
  • @babel/core: The core Babel library.
  • @babel/preset-env: A Babel preset that allows you to use the latest JavaScript.
  • @babel/preset-react: A Babel preset for React applications.

Configuring Babel

To configure Babel, create a .babelrc file in the root of your project directory. This file tells Babel which presets and plugins to use:

{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}

The above configuration uses two presets:

  • @babel/preset-env: Transpiles modern JavaScript into a version compatible with current and older browsers.
  • @babel/preset-react: Transpiles JSX and other React-specific syntax.

Configuring Webpack

Next, create a webpack.config.js file in the root of your project. This file will configure Webpack to bundle your React and Redux code:

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  },
  devServer: {
    contentBase: path.join(__dirname, 'dist'),
    compress: true,
    port: 9000
  },
  resolve: {
    extensions: ['.js', '.jsx']
  }
};

Here's a breakdown of the Webpack configuration:

  • entry: Specifies the entry point of your application. In this case, it's src/index.js.
  • output: Defines the output path and filename for the bundled file.
  • module.rules: An array of rules that define how different modules should be treated. Here, it specifies that all .js files should be processed by babel-loader, excluding the node_modules directory.
  • devServer: Configures the Webpack development server. It serves files from the dist directory and runs on port 9000.
  • resolve.extensions: Allows you to import modules without needing to add their extensions.

Setting Up the Project Structure

Now that Babel and Webpack are configured, set up the project structure. Create the following directories and files:

mkdir src
touch src/index.js
touch src/App.js
mkdir dist

The src directory will contain your application code. The dist directory will be used by Webpack to store the bundled files.

Creating a Simple React and Redux App

With the structure in place, let's create a simple React application that uses Redux for state management. Start by editing src/index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import App from './App';

const initialState = {
  count: 0
};

function reducer(state = initialState, action) {
  switch (action.type) {
    case 'INCREMENT':
      return { count: state.count + 1 };
    case 'DECREMENT':
      return { count: state.count - 1 };
    default:
      return state;
  }
}

const store = createStore(reducer);

ReactDOM.render(
  
    
  ,
  document.getElementById('root')
);

This code sets up a Redux store with a simple reducer that manages a count state. It uses the Provider component from react-redux to make the Redux store available to the rest of the app.

Next, edit src/App.js to create a simple component that interacts with the Redux store:

import React from 'react';
import { useSelector, useDispatch } from 'react-redux';

function App() {
  const count = useSelector((state) => state.count);
  const dispatch = useDispatch();

  return (
    

Count: {count}

); } export default App;

This component uses the useSelector hook to access the current count from the Redux store and the useDispatch hook to dispatch actions to the store.

Running the Development Server

With everything set up, you can now run the Webpack development server to see your application in action. Add the following script to your package.json:

"scripts": {
  "start": "webpack serve --open"
}

Run the command:

npm start

This will start the Webpack development server and open your application in the default web browser. You should see the counter application with buttons to increment and decrement the count.

Conclusion

Setting up a Redux project involves configuring Babel and Webpack to handle the modern JavaScript and React code. By following the steps outlined above, you can create a basic setup that allows you to build a React application with Redux for state management. This setup provides a solid foundation to build more complex applications, enabling you to focus on writing the application logic rather than dealing with the intricacies of the build process.

Now answer the exercise about the content:

What is the primary purpose of Babel in a Redux project setup?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Setting Up a Redux Project: Integrating Redux with Existing Codebases

Next page of the Free Ebook:

7Setting Up a Redux Project: Integrating Redux with Existing Codebases

9 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text