Giter Site home page Giter Site logo

Comments (6)

PeachScript avatar PeachScript commented on May 13, 2024

postcssLoader 配置项是用来传递配置给内置规则的 postcss-loader 的,自定义 loader 需要使用 chainWebpack 配置项:https://d.umijs.org/plugin/api#chainwebpack

from dumi.

ThorSmallice avatar ThorSmallice commented on May 13, 2024

我尝试了两种做法均不生效

// 1
import { defineConfig } from 'dumi';
import { resolve } from 'path';
export default defineConfig({
  outputPath: 'docs-dist',
  chainWebpack: (config: any) => {
    config.module
      .rule('pcss')
      .test(/\.pcss$/)
      .use('style-loader')
      .loader('style-loader')
      .end()
      .use('css-loader')
      .loader('css-loader')
      .end()
      .use('postcss-loader')
      .loader('postcss-loader')
      .options({
        ident: 'postcss',
        plugins: () => [require('autoprefixer')],
      })
      .end()
      .use('pcss-loader')
      .loader('pcss-loader')
      .end();

    return config;
  },
  resolve: {
    atomDirs: [
      {
        type: 'component',
        dir: 'src/components',
      },
      {
        type: 'hooks',
        dir: 'src/hooks',
      },
    ],
  },
  // plugins: ['./plugins/postcss.ts'],
  themeConfig: {
    name: 'maptalks-react',
  },
  alias: {
    '@context': resolve(__dirname, 'src/context'),
    '@hooks': resolve(__dirname, 'src/hooks'),
  },
});

2-----

import { defineConfig } from 'dumi';
import { resolve } from 'path';
export default defineConfig({
  outputPath: 'docs-dist',
  resolve: {
    atomDirs: [
      {
        type: 'component',
        dir: 'src/components',
      },
      {
        type: 'hooks',
        dir: 'src/hooks',
      },
    ],
  },
  plugins: ['./plugins/postcss.ts'],
  themeConfig: {
    name: 'maptalks-react',
  },
  alias: {
    '@context': resolve(__dirname, 'src/context'),
    '@hooks': resolve(__dirname, 'src/hooks'),
  },
});

plugins/postcss.ts

import { IApi } from 'dumi';
export default (api: IApi) => {
  api.describe({
    key: 'postcss',
  });
  api.chainWebpack((config: any) => {
    config.module
      .rule('pcss')
      .test(/\.pcss$/)
      .use('style-loader')
      .loader('style-loader')
      .end()
      .use('css-loader')
      .loader('css-loader')
      .end()
      .use('postcss-loader')
      .loader('postcss-loader')
      .options({
        ident: 'postcss',
        plugins: () => [require('autoprefixer')],
      })
      .end()
      .use('pcss-loader')
      .loader('pcss-loader')
      .end();
 
    return config;
  });
};

from dumi.

PeachScript avatar PeachScript commented on May 13, 2024

提供下最小可复现仓库

from dumi.

ThorSmallice avatar ThorSmallice commented on May 13, 2024

https://github.com/ThorSmallice/dumi-test.git

pcss使用在Foo组件中

from dumi.

PeachScript avatar PeachScript commented on May 13, 2024

没用过 pcss-loader,但从文档来看它返回的是 js module,需要自己把 styles 插入到 DOM 里,示例项目没有做这个步骤所以样式不会生效,ref: https://github.com/fabien-h/pcss-loader#input-and-output

from dumi.

ThorSmallice avatar ThorSmallice commented on May 13, 2024

pcss-loader可以注释掉的,我在其他的webpack项目里只需要这样配置postcss-loader,如下

module: {
 rules: [
 {
        test: /\.(p?css)$/,
        include: [/apps[\/\\]react-.*/, /node_modules[\/\\]@scet/],
        exclude: /\.scoped\.(pcss)$/,
        use: [
          {
            loader: 'style-loader'
          },
          {
            loader: 'css-loader',
          },
          'postcss-loader'
        ]
      }
]
}

然后在根目录创建postcss.config.js / postcss.config.cjs 就可以import pcss文件使用了

from dumi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.