使用 PurgeCSS、TailwindCSS 和 Webpack
Posted
技术标签:
【中文标题】使用 PurgeCSS、TailwindCSS 和 Webpack【英文标题】:Using PurgeCSS, TailwindCSS, and Webpack 【发布时间】:2019-01-07 06:24:54 【问题描述】:我正在尝试为使用 TailwindCSS 构建的静态站点设置 webpack。我正在尝试使用 PurgeCSS 来制作我的 css 文件并删除任何未使用的东西,但我不相信它正在工作。它将无错误地编译,但 css 文件为 16kb,并且 Google lighthouse 审计说有未使用的 css。
webpack.config.js
const path = require("path");
const glob = require("glob-all");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const PurgecssPlugin = require("purgecss-webpack-plugin");
/**
* Custom PurgeCSS Extractor
* https://github.com/FullHuman/purgecss
* https://github.com/FullHuman/purgecss-webpack-plugin
*/
class TailwindExtractor
static extract(content)
return content.match(/[A-z0-9-:\/]+/g);
module.exports =
entry: "./index.js",
output:
path: path.resolve(__dirname, "dist"),
filename: "styles.css"
,
module:
rules: [
test: /\.css$/,
use: ExtractTextPlugin.extract(
fallback: "style-loader",
use: [ loader: "css-loader", options: importLoaders: 1 , "postcss-loader"]
)
]
,
plugins: [
new ExtractTextPlugin("styles.css"),
new PurgecssPlugin(
paths: glob.sync([
path.join(__dirname, "src/styles.css"),
path.join(__dirname, "index.html")
]),
extractors: [
extractor: TailwindExtractor,
extensions: ["html", "js"]
]
)
]
;
package.json
"private": true,
"scripts":
"dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=webpack.config.js",
"prod": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=webpack.config.js"
,
"devDependencies":
"ajv": "^6.5.2",
"cross-env": "^5.1",
"css-loader": "^0.28.7",
"extract-text-webpack-plugin": "^3.0.2",
"postcss": "^6.0.14",
"postcss-loader": "^2.0.8",
"purgecss-webpack-plugin": "^1.2.0",
"style-loader": "^0.19.0",
"tailwindcss": "^0.6.4",
"webpack": "^3.8.1"
,
"dependencies":
"glob-all": "^3.1.0"
任何帮助将不胜感激!
【问题讨论】:
您使用的是谷歌浏览器吗?当 DevTools 打开时,点击 ESC 键并在下拉菜单中选择“Coverage”。在那里您可以检查哪些 CSS 已使用/未使用。 【参考方案1】:您是否尝试使用npm build
或yarn build
编译您的代码?
如果您转到“使用 Tailwind 处理您的 CSS”下的 TailwindCSS 文档,则有“使用 Tailwind 和 PostCSS”部分,并且有一个链接的模板存储库,您可以在其中查看如何完成它。
我看到的第一件事是您的入口点是您的 index.js,在模板 repo 中它的 ./src/styles.css
。
【讨论】:
【参考方案2】:如果您编译的 CSS 只有 16Kb,那么 PurgeCSS 肯定可以工作,没有它 Tailwind 将输出大约 300Kb 的内容。
【讨论】:
以上是关于使用 PurgeCSS、TailwindCSS 和 Webpack的主要内容,如果未能解决你的问题,请参考以下文章
TailwindCSS / PurgeCSS 白名单不起作用
即使在 PurgeCSS 之后,TailwindCSS 构建的 css 文件也太大了
javascript 用于AdonisJS的Laravel Mix + TailwindCSS + PurgeCSS资产管道配置