MDB 5 Parcel Integration

Introduction

This guide will walk you through steps necessary to include and bundle MDB package in your project using Parcel.


Parcel starter

If you want to use the starter prepared by us, use MDB CLI to create a new project.

Note: If you don't have MDB CLI installed yet, you can do it with NPM: npm install -g mdb-cli. Now log in with your MDB account, type: mdb login. If you don't have account yet you can create one using mdb register command.

        
            
          mdb frontend init mdb5-free-standard-parcel
        
        
    
        
            
          mdb frontend init mdb5-essential-standard-parcel
        
        
    
        
            
          mdb frontend init mdb5-advanced-standard-parcel
        
        
    

Or download the repository.

MDB Parcel Starter

Note: Parcel starter on Github repo uses MDB Standard free installed via NPM. If you want to use a Pro version or a different installation method go to the import MDB section and check if it requires configuration changes. For example, changing the import paths of MDB files.

Basic features

Unpack starter zip and install dependencies via npm.

        
            
      npm install
      
        
    

If you decided to use a prepared starter, you can skip this tutorial. The starter is fully configured and ready to use.


Setup

Before you start make sure you have Node.js installed.

Create a project folder and setup npm

We’ll create the my-project folder and initialize npm with the -y argument to avoid it asking us all the interactive questions.

        
            
        mkdir my-project && cd my-project
        npm init -y
      
        
    
Install Parcel

Unlike our Webpack guide, there’s only a single build tool dependency here. Parcel will automatically install language transformers (like Sass) as it detects them. We use --save-dev to signal that this dependency is only for development use and not for production.

        
            
        npm i --save-dev parcel
      
        
    

Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing MDB.


Project Structure

We’ve already created the my-project folder and initialized npm. Now we’ll also create our src folder to round out the project structure. Run the following from my-project, or manually create the folder and file structure shown below.

        
            
      mkdir {src,src/js,src/scss,src/assets,src/assets/mdb}
      touch src/index.html src/js/main.js src/scss/styles.scss
      
        
    

When you’re done, your complete project should look like this:

        
          my-project/
          ├── dist/
          │   └── index.html
          ├── src/
          │   ├── assets/
          │   │   └── mdb/
          │   ├── js/
          │   │   └── main.js
          │   ├── scss/
          │   │   └── styles.scss
          │   └── index.html
          ├── package-lock.json
          └──  package.json
        
      

At this point, everything is in the right place, but Parcel needs an HTML page and npm script to start our server.


Configure Parcel

With dependencies installed and our project folder ready for us to start coding, we can now configure Parcel and run our project locally.

Next we fill in src/index.html.

This is the HTML page Parcel will load in the browser to utilize the bundled CSS and JS we’ll add to it in later steps.

        
            
      <!doctype html>
      <html lang="en">
        <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>MDB w/ Parcel</title>
          <!-- Font Awesome -->
          <link
          href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
          rel="stylesheet"
          />
          <!-- Google Fonts -->
          <link
          href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
          rel="stylesheet"
          />
        </head>
        <body>
          <div class="container py-4 px-3 mx-auto">
            <h1>Hello, MDB and Parcel!</h1>
            <button class="btn btn-primary" data-mdb-ripple-init>Primary button</button>
          </div>
          <script type="module" src="./js/main.js"></script>
        </body>
      </html>
      
        
    

We’re including a little bit of styling here with the div class="container" and <button> so that we see when CSS from MDB package is loaded by Parcel.

Now we need an npm script to run Parcel.

Open package.json and add the start script shown below (you should already have the test script). We’ll use this script to start our local Parcel dev server.

        
            
      {
        // ...
        "scripts": {
          "start": "parcel ./src/index.html",
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        // ...
      }
      
        
    
And finally, we can start Parcel

From the my-project folder in your terminal, run that newly added npm script:

        
            
        npm start
      
        
    

In the next section to this guide, we’ll import all of MDB's CSS and JavaScript.


Import MDB

Here you need to decide which method of import you want to choose. CDN import is available only for free version of MDB.

To install the MDB UI KIT in your project easily type the following command in the terminal. If you have PRO package remember to swap the access token before starting the installation.

Token generation

If you don't have access token yet please follow the tutorial.

Install MDB via NPM
        
            
              npm i git+https://oauth2:ACCESS_TOKEN@git.mdbootstrap.com/mdb/standard/mdb-ui-kit-pro-essential
            
        
    
        
            
            npm i git+https://oauth2:ACCESS_TOKEN@git.mdbootstrap.com/mdb/standard/mdb-ui-kit-pro-advanced
          
        
    
        
            
              npm i mdb-ui-kit
            
        
    
Importing JavaScript modules
        
            
            import '../scss/styles.scss';

            import { Ripple, initMDB } from 'mdb-ui-kit/js/mdb.es.min.js'; // Import needed modules

            window.Ripple = Ripple;
            
            initMDB({ Ripple }) // Initialize imported modules to enable data-attribute init
          
        
    
        
            
            import '../scss/styles.scss';
            import * as mdb from 'mdb-ui-kit/js/mdb.umd.min.js';
            window.mdb = mdb;
          
        
    
Importing SCSS file
        
            
              @import 'mdb-ui-kit/src/scss/mdb.pro.scss';
            
        
    
        
            
              @import 'mdb-ui-kit/src/mdb/scss/mdb.pro.scss';
            
        
    
        
            
              @import 'mdb-ui-kit/src/scss/mdb.free.scss';
            
        
    
Add MDB via MDB CLI

Create a new project with our MDB starter. Run the command below and select the MDB5 Standard.

        
            
              cd my-project/src/assets
              mdb frontend init
            
        
    

Note: The project will be created in a folder with a different name than mdb. Rename the folder to mdb, or note that you must include a different folder name in the paths of the imported MDB files.

Add MDB via ZIP

Download the zip package, extract the downloaded package and copy included files into directory my-project/src/assets/mdb.

Compiled files

Add the following to src/scss/styles.scss to import all of MDB’s source Sass.

        
            
          @import '../assets/mdb/css/mdb.min.css';
          
        
    

Add the following to src/js/index.js to import all of MDB's JS.

        
            
              import '../scss/styles.scss';

              import { Ripple, initMDB } from '../assets/mdb/js/mdb.es.min.js'; // Import needed modules

              window.Ripple = Ripple;
              
              initMDB({ Ripple }) // Initialize imported modules to enable data-attribute init
            
        
    
        
            
            // Import our custom SCSS
            import '../scss/styles.scss';

            // Import all of MDB's JS
            import * as mdb from '../assets/mdb/js/mdb.umd.min.js';
            window.mdb = mdb;
            
            // or, specify which components you need:
            import { Input, Toast, Tooltip } from '../assets/mdb/js/mdb.umd.min.js';

            // you can also import modules with custom name
            import { Input as CustomInput } from '../assets/mdb/js/mdb.umd.min.js';
            
        
    
Source files

If you prefer to import source files from MDB package or use custom import there are some additional dependency requirements depending on used package free/pro.

        
            
            npm i --save-dev @popperjs/core detect-autofill chart.js chartjs-plugin-datalabels deepmerge perfect-scrollbar
            
        
    
        
            
            npm i --save-dev @popperjs/core detect-autofill
            
        
    

In this case src/js/main.js file will look like this:

        
            
                            import '../scss/styles.scss';
          
                            import { Ripple, initMDB } from '../assets/mdb/src/js/mdb.pro.es.js'; // Import needed modules
          
                            window.Ripple = Ripple;
          
                            initMDB({ Ripple }) // Initialize imported modules to enable data-attribute init
                          
        
    
        
            
                            // Import our custom SCSS
                            import '../scss/styles.scss';
          
                            // Import all of MDB's JS
                            import * as mdb from '../assets/mdb/src/js/mdb.pro.umd.js'; // lib
                            window.mdb = mdb;
                          
        
    
        
            
                          // Import our custom SCSS
                          import '../scss/styles.scss';
          
                          // Import all of MDB's JS
                          import { Ripple, initMDB } from '../assets/mdb/src/js/mdb.free.es.js'; // Import needed modules
          
                          window.Ripple = Ripple;
          
                          initMDB({ Ripple }) // Initialize imported modules to enable data-attribute init
                        
        
    
        
            
                          // Import our custom SCSS
                          import '../scss/styles.scss';
          
                          // Import all of MDB's JS
                          import * as mdb from '../assets/mdb/src/js/mdb.free.umd.js'; // lib
                          window.mdb = mdb;
                        
        
    

And content of src/scss/styles.scss should be:

        
            
            @import '../assets/mdb/src/scss/mdb.pro';
            
        
    
        
            
            @import '../assets/mdb/src/scss/mdb.free';
            
        
    

Installation via CDN is one of the easiest methods of integrating MDB UI KIT with your project. Just copy the latest compiled JS script tag and CSS link tag from cdnjs to the application.

Don't forget to add also Font Awesome and Roboto font if you need. Here's an example code:

Into the <head> tag in your HTML file copy:

        
            
              <!-- Font Awesome -->
              <link
                href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
                rel="stylesheet"
              />
              <!-- Google Fonts -->
              <link
                href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
                rel="stylesheet"
              />
              <!-- MDB -->
              <link
                href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/7.0.0/mdb.min.css"
                rel="stylesheet"
              />
            
        
    

At the end of <body> tag in your HTML file copy:

        
            
            <!-- MDB -->
            <script
            type="text/javascript"
            src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/7.0.0/mdb.umd.min.js"
            ></script>
            
        
    
Now you're done

With MDB's source Sass and JS fully loaded, your local development server should work and you should see MDB styles applied to button in the example.


Create build

The starter that we have prepared for you is fully configured and we have added the build command to it. Just run the npm run build command. You will find the bundled files in the dist folder.

If you have decided to configure the project yourself, you must add the build command in the package.json file.

        
            
          "scripts": {
            ...
            "build": "parcel build --public-url ./ ./src/index.html --dist-dir ./dist --no-cache",
            ...
          },
        
        
    

After that you can use npm run build command. You will find the bundled files in the folder you set as the output directory. By default, this is the dist folder.