万象更新 Html5 - css: 通过 postcss 编译 css

源码 https://github.com/webabcd/Html5
作者 webabcd

万象更新 Html5 - css: 通过 postcss 编译 css

示例如下:

css\src\index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>css</title>
    <link rel="stylesheet" type="text/css" href="css.css" />
    <script src="index.js"></script>
</head>

<body>

    <ul>
        <li><a href="layout/float/demo1.html">float 布局: 基础</a></li>
        <li><a href="layout/float/demo2.html">float 布局: 通过 float 布局实现 3 栏式布局</a></li>
        <li><a href="layout/flex/demo1.html">flex 布局: flex-direction, flex-wrap, flex-flow</a></li>
        <li><a href="layout/flex/demo2.html">flex 布局: justify-content, align-items, align-content, align-self</a></li>
        <li><a href="layout/flex/demo3.html">flex 布局: order, flex-grow, flex-shrink, flex-basis, flex</a></li>
        <li><a href="layout/position.html">position 布局: 定位(static, relative, absolute, fixed)</a></li>
        <li><a href="layout/overflow.html">overflow 布局: 内容溢出时的样式</a></li>
        <li><a href="selector/demo1.html">selector 选择器: 基础,通配符选择器,元素选择器,id 选择器,类选择器</a></li>
        <li><a href="selector/demo2.html">selector 选择器: 属性选择器(attribute selector)</a></li>
        <li><a href="selector/demo3.html">selector 选择器: 后代选择器,子选择器,相邻兄弟选择器,兄弟选择器</a></li>
        <li><a href="selector/demo4.html">selector 选择器: 伪类(pseudo class)</a></li>
        <li><a href="selector/demo5.html">selector 选择器: 伪元素(pseudo element)</a></li>
        <li><a href="counter.html">counter 计数器</a></li>
        <li><a href="iconfont.html">字体图标</a></li>
        <li><a href="unit.html">单位 px/em/pt</a></li>
    </ul>

    <!--本例用于演示如何通过 postcss 编译 css-->
    <div class="css1">abc</div>
    <div class="css2">xyz</div>

</body>

</html>

css\src\index.js

// 这里导入的 css 会被 rollup.config.js 中配置的 postcss 编译
import './css1.css'
import './css2.css'


css\src\css1.css

/* 本例用于演示如何通过 postcss 编译 css */
.css1 {
    display: flex;
    /* 水平居中 */
    justify-content: center;
    /* 垂直居中 */
    align-items: center;
    width: 100px;
    height: 100px;
    background-color: red;
    color: white;
    transform: rotate(15deg);
}

css\src\css2.css

/* 本例用于演示如何通过 postcss 编译 css */
.css2 {
    display: flex;
    /* 水平居中 */
    justify-content: center;
    /* 垂直居中 */
    align-items: center;
    width: 100px;
    height: 100px;
    background-color: green;
    color: white;
    transform: rotate(45deg);
}

css\rollup.config.js

import babel from 'rollup-plugin-babel';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from '@rollup/plugin-json';
import postcss from 'rollup-plugin-postcss';
import autoprefixer from 'autoprefixer';
import copy from 'rollup-plugin-copy';
import { resolve as pathResolve } from 'path'

// ./ 代表当前目录
// ../ 代表上级目录
// / 代表根目录
// path.resolve() 用于拼接路径,以及将指定的路径解析为绝对路径
console.log("path1", pathResolve("./css/src/index.js")) // D:\gitroot\Html5\css\src\index.js
console.log("path2", pathResolve("../Html5/css/src/index.js")) // D:\gitroot\Html5\css\src\index.js
console.log("path3", pathResolve("/gitroot/Html5/css/src/index.js")) // D:\gitroot\Html5\css\src\index.js
console.log("path4", pathResolve(__dirname)) // D:\gitroot\Html5\css
console.log("path5", pathResolve(__dirname, `./src/index.js`)) // D:\gitroot\Html5\css\src\index.js

export default {
    input: './css/src/index.js', // 需要编译的 js 的入口文件
    output: {
        name: 'html5_css', // 这个名字要写,不然有的时候编译会有警告
        file: './css/dist/index.js', // 编译后的 js 文件的保存地址
        format: 'iife', // 编译格式,另外还有 umd,cjs, es 之类的
        sourcemap: true, // 启用源代码映射,以便通过源码调试
    },
    plugins: [
        // 用于解决类似 Unresolved dependencies 或者 'xxx' is imported by ***.js, but could not be resolved – treating it as an external dependency 之类的警告
        nodeResolve(),
        // 用于将 json 转换为 es6
        json(),
        // 用于将 commonjs 转换为 es6(比如,如果你的代码中有 require 的话,那么这是不能在浏览器中运行的,此时就可以用这个插件可转换一下)
        commonjs({
            sourceMap: false // 不用生成源映射(源映射用于保存源代码与编译后代码的映射关系,从而方便定位代码)
        }),
        // 更多配置参见 .babelrc 文件
        babel({
            // * 匹配当前目录下的所有文件和一级子目录,但不包括这些一级子目录下的内容
            // ** 匹配当前目录下的所有子目录和文件,包括任意层级的子目录和文件
            exclude: './node_modules/**' // 不转换 node_modules 中的代码
        }),
        // 用于编译 css(需要支持的浏览器会从 package.json 中的 browserslist 配置读取)
        // 注:input 的 js 文件中的 import 的 css 会被此处的 postcss 编译
        postcss({
            plugins: [autoprefixer], // 启用 postcss 的 autoprefixer 插件
            minimize: false, // 是否压缩 css
            extract: pathResolve(__dirname, `./dist/css.css`) // 编译后的 css 的保存路径
        }),
        // 复制文件
        copy({
            targets: [
                { src: './css/src/*', dest: './css/dist', ignore: ['./css/src/css1.css', './css/src/css2.css'] }
            ]
        })
    ]
}

源码 https://github.com/webabcd/Html5
作者 webabcd

posted @ 2024-09-24 10:44  webabcd  阅读(11)  评论(0编辑  收藏  举报