Note: Webpack might not be the best tool for this purpose, but it can be done ;)
Make sure webpack is installed and setup.
By default, webpack will bundle and embed CSS into the javascript file.
Merge CSS
The best way to merge CSS files into one independent CSS file is to use extract-text-webpack-plugin.
npm install --save-dev extract-text-webpack-pluginEdit webpack.config.js to include setup the plugin.
const path = require('path');const ExtractTextPlugin = require('extract-text-webpack-plugin');module.exports = { entry: { 'bundle.min.css': [ path.resolve(__dirname, 'src/css/main.css'), path.resolve(__dirname, 'src/css/local.css') ], 'bundle.js': [ path.resolve(__dirname, 'src/index.js') ] }, output: { filename: '[name]', path: path.resolve(__dirname, 'dist'), }, module: { rules: [ { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }) }, ], }, plugins: [ new ExtractTextPlugin("bundle.min.css"), ]};The generated dist/bundle.min.css is pure css file combining src/css/main.css and src/css/local.css.
# npm run build./node_modules/.bin/webpack# build for production (with minified)./node_modules/.bin/webpack -pMerge Sass and Less
You can combine .css, .less and .sass into a single CSS output.
Install Sass and Less loaders.
npm install --save-dev sass-loader node-sassnpm install --save-dev less-loader lessEdit webpack.config.js to setup the loaders.
const path = require('path');const ExtractTextPlugin = require('extract-text-webpack-plugin');module.exports = { entry: { 'bundle.min.css': [ path.resolve(__dirname, 'src/css/main.css'), path.resolve(__dirname, 'src/css/local.css'), path.resolve(__dirname, 'src/css/test.less'), path.resolve(__dirname, 'src/css/test.sass'), ], 'bundle.js': [ path.resolve(__dirname, 'src/index.js') ] }, output: { filename: '[name]', path: path.resolve(__dirname, 'dist'), }, module: { rules: [ { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }) }, { test: /\.sass$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'sass-loader'] }) }, { test: /\.less$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'less-loader'] }) } ], }, plugins: [ new ExtractTextPlugin("bundle.min.css"), ]};Build.
./node_modules/.bin/webpackDirectory structure.
├── dist
│ ├── bundle.js
│ ├── bundle.min.css
│ └── index.html
├── package.json
├── src
│ ├── css
│ │ ├── local.css
│ │ ├── main.css
│ │ ├── test.less
│ │ └── test.sass
│ └── index.js
└── webpack.config.jsNOTE: Refer to webpack configuration to combine Bootstrap dependencies into single js and css file.