Loading...
Loading...
Include and bundle Bootstrap 6's CSS and JavaScript in a project using Webpack. Use when setting up Bootstrap with Webpack, configuring Webpack loaders for Bootstrap's Sass and JS, or creating a Webpack-based Bootstrap project.
npx skill4agent add twbs/bootstrap bootstrap-webpackmkdir my-project && cd my-project
npm init -ynpm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin@floating-ui/domvanilla-calendar-pronpm i --save bootstrap@6.0.0-alpha.1 @floating-ui/dom vanilla-calendar-pronpm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loadermkdir {src,src/js,src/scss}
touch src/index.html src/js/main.js src/scss/styles.scss webpack.config.jsmy-project/
├── src/
│ ├── js/
│ │ └── main.js
│ ├── scss/
│ │ └── styles.scss
│ └── index.html
├── package-lock.json
├── package.json
└── webpack.config.jswebpack.config.js'use strict'
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
mode: 'development',
entry: './src/js/main.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
},
devServer: {
static: path.resolve(__dirname, 'dist'),
port: 8080,
hot: true
},
plugins: [
new HtmlWebpackPlugin({ template: './src/index.html' })
]
}src/index.html<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap w/ Webpack</title>
</head>
<body>
<div class="container py-4 px-3 mx-auto">
<h1>Hello, Bootstrap and Webpack!</h1>
<button class="btn-solid theme-primary">Primary button</button>
</div>
</body>
</html>package.json{
"scripts": {
"start": "webpack serve",
"build": "webpack build --mode=production",
"test": "echo \"Error: no test specified\" && exit 1"
}
}npm startmodule.ruleswebpack.config.jssass-loaderpostcss-loadercss-loaderstyle-loader'use strict'
const path = require('path')
const autoprefixer = require('autoprefixer')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
mode: 'development',
entry: './src/js/main.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
},
devServer: {
static: path.resolve(__dirname, 'dist'),
port: 8080,
hot: true
},
plugins: [
new HtmlWebpackPlugin({ template: './src/index.html' })
],
module: {
rules: [
{
test: /\.(scss)$/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' },
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [
autoprefixer
]
}
}
},
{ loader: 'sass-loader' }
]
}
]
}
}src/scss/styles.scss@use@import// Import all of Bootstrap's CSS
@use "bootstrap/scss/bootstrap";$root-tokens$*-tokens--bs-src/js/main.js// Import our custom CSS, then all of Bootstrap’s JS
import '../scss/styles.scss'
import * as bootstrap from 'bootstrap'import { Tooltip, Toast, Popover } from 'bootstrap'npm starthttp://localhost:8080.container.btn-solid.theme-primaryoklch()color-mix()mini-css-extract-pluginstyle-loaderminiCssExtractPlugin.loaderdist/main.cssdata:data:mimetype: 'image/svg+xml'scheme: 'data'type: 'asset/resource'