create-react-app(CRA)配置stylus,同时配置全局mixin和variable

  • Post author:
  • Post category:其他

这个配了超级久,一方面是CRA自定义webpack不太方便,另一方面是关于stylus的也太少了点,不是配置scss就是less,搜到几个stylus还是关于vue-cli的😭😭😭,上网查了好久才配置出来了,现在写出来吧,希望可以对其他人有帮助

网上cra配置stylus很多利用npm run eject都是暴露了webpack配置,我个人不太喜欢这种方式
这里采用的是customize-cra+react-app-rewired,安装啥的就不说了
1.安装
npm install stylus stylus-loader --save-dev
2.config-overrides.js配置

const { override, addWebpackAlias, fixBabelImports, addLessLoader, adjustStyleLoaders } = require('customize-cra');
const path = require('path')

const stylus = () => config => {
    const stylusLoader = {
        test: /\.styl$/,
        use: [
            {
                loader: 'style-loader'
            }, {
                loader: 'css-loader',
            }, {
                loader: 'stylus-loader',
                options: {
                    stylusOptions: {
                        import: [
                            path.join(__dirname, "src/stylus/mixins.styl"),
                            path.join(__dirname, "src/stylus/variables.styl")
                        ],
                    }
                }
            }
        ]
    }
    const oneOf = config.module.rules.find(rule => rule.oneOf).oneOf
    oneOf.unshift(stylusLoader)
    return config
}

module.exports = override(
    fixBabelImports('import', { // 按需导入antd
        libraryName: 'antd',
        libraryDirectory: 'es',
        style: true,
    }),
    addLessLoader({
        lessOptions: {
            javascriptEnabled: true,
            modifyVars: {
                "@primary-color": "#ee96a9",
            },
        }
    }),
    adjustStyleLoaders(({ use: [, , postcss] }) => {
        const postcssOptions = postcss.options;
        postcss.options = { postcssOptions };
    }),
    //前面是自己的一些配置,下面这个stylus()是关键
    stylus()
);

引入stylus这个是在customize-cra的issues上找到,import全局文件是我自己看着stylus-loader文档写的,cv就完事了哈哈哈哈😁😁
这下子就可以随便用啦,over!!!


版权声明:本文为qq_52092705原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。