# Webpack+Postcss 手動配置 [Webpack教學 (一) :什麼是Webpack? 能吃嗎?](https://medium.com/i-am-mike/%E4%BB%80%E9%BA%BC%E6%98%AFwebpack-%E4%BD%A0%E9%9C%80%E8%A6%81webpack%E5%97%8E-2d8f9658241d) [Webpack教學 (二) :檔案你要去哪裡?](https://medium.com/i-am-mike/webpack%E6%95%99%E5%AD%B8-%E4%BA%8C-%E6%AA%94%E6%A1%88%E4%BD%A0%E8%A6%81%E5%8E%BB%E5%93%AA%E8%A3%A1-13bdada9e543) [Webpack教學 (三):永不停止的Watch](https://medium.com/i-am-mike/webpack%E6%95%99%E5%AD%B8-%E4%B8%89-%E6%B0%B8%E4%B8%8D%E5%81%9C%E6%AD%A2%E7%9A%84watch-dbf98ebf8356) [Webpack教學 (四):JavaScript 與 Babel](https://medium.com/i-am-mike/webpack%E6%95%99%E5%AD%B8-%E5%9B%9B-javascript-%E8%88%87-babel-1d7acd911e63) [兩個有用plugins : mini-css-extract-plugin、HtmlWebpackPlugin,文中少裝一個sass(npm i sass -D)](https://jimmyswebnote.com/frontend-project-sop-and-webpack-tutorial/) [多個entry和output配置、js不同文件的指定引用](https://blog.csdn.net/Sicily_winner/article/details/104241056) ================== 非必要 ==================== [webpack 新手教學之淺談模組化,神文!!!](https://blog.techbridge.cc/2020/01/22/webpack-%E6%96%B0%E6%89%8B%E6%95%99%E5%AD%B8%E4%B9%8B%E6%B7%BA%E8%AB%87%E6%A8%A1%E7%B5%84%E5%8C%96%E8%88%87-snowpack/) [webpack Postcss配置](https://medium.com/%E5%B0%8F%E5%BD%A5%E5%BD%A5%E7%9A%84%E5%89%8D%E7%AB%AF%E4%BA%94%E5%9B%9B%E4%B8%89/%E5%9C%A8webpack%E4%B8%AD%E4%BD%BF%E7%94%A8postcss-%E5%92%8C-autoprefixer%E5%B9%ABcss%E8%87%AA%E5%8B%95%E5%A2%9E%E5%8A%A0%E5%89%8D%E7%B6%B4%E8%A9%9E-c06c093dc60e) [webpack Postcss配置2 ( option那邊會報錯,請參照上一篇文 )](https://awdr74100.github.io/2020-03-05-webpack-postcssloader/) [browserslist配置](https://juejin.cn/post/6844903669524086797) # 目錄結構 ![](https://i.imgur.com/ciaJv9q.png) # webpack.config.js ``` const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); module.exports = { context: path.resolve(__dirname,'src/entry'), entry: { home: './index.js', other: './index2.js' }, output: { path: path.resolve(__dirname, 'dist/js'), filename: '[name].bundle.js', }, plugins: [ new HtmlWebpackPlugin({ //entry當路徑起點 template: '../html/home.html', //output當路徑起點 filename: '../html/home.html', //處理完後的檔案名稱 chunks: ['home'] }), new HtmlWebpackPlugin({ //entry當路徑起點 template: '../html/other.html', //output當路徑起點 filename: '../html/other.html', //處理完後的檔案名稱 chunks: ['other'] }), new MiniCssExtractPlugin({ filename: '../css/[name].css', }) ], module: { rules: [ { test: /\.(js)$/, exclude: /(node_modules)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } }, //用css loader來處理css檔案 { test: /\.css$/i, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'] }, //用sass loader來處理sass或scss檔案 { test: /\.s[ac]ss$/i, use: [ MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader'] } ] } }; ``` # package.json ``` { "name": "1012", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "watch": "webpack --mode development --watch", "start": "webpack --mode development", "deploy": "webpack --mode production" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.15.8", "@babel/preset-env": "^7.15.8", "autoprefixer": "^10.3.7", "babel-loader": "^8.2.2", "css-loader": "^6.4.0", "html-webpack-plugin": "^5.3.2", "mini-css-extract-plugin": "^2.4.2", "postcss": "^8.3.9", "postcss-loader": "^6.1.1", "sass": "^1.42.1", "sass-loader": "^12.1.0", "style-loader": "^3.3.0", "tailwindcss": "^2.2.16", "webpack": "^5.58.1", "webpack-cli": "^4.9.0" }, "browserslist": [ "last 1 version", "> 1%", "IE 10" ] } ```