如何在 react-static 中为每个页面生成单独的 css 文件

Posted

技术标签:

【中文标题】如何在 react-static 中为每个页面生成单独的 css 文件【英文标题】:How to generate separate css files for each page in react-static 【发布时间】:2021-07-17 22:48:12 【问题描述】:

我有一个使用 react-static 构建的应用程序。我注意到所有页面(路由)的 CSS 都合并到一个大的 styles.css 文件中。是否可以为每个页面生成单独的 CSS 文件?

现在,如果我运行build 命令,则 dist 文件夹中有一个 css 文件,两个页面都有 css,我想为 MainPage 和 AboutPage 获取单独的 css 文件。

这就是我的static.config.js 文件的样子:

export default 
  getRoutes: async () => 
    return [
      
        path: '/',
        template: 'src/pages/MainPage/MainPage.js',
      ,
      
        path: 'about',
        template: 'src/pages/AboutPage/AboutPage.js',
      ,
    ]
  ,
  plugins: [
    require.resolve('react-static-plugin-sass'),
    require.resolve('react-static-plugin-reach-router'),
    require.resolve('react-static-plugin-sitemap'),
  ],

这里是完整的代码:https://github.com/annmirosh/react-static-test

感谢您的帮助!

【问题讨论】:

您能否进一步解释一下您的问题中的“生成”是什么意思? @JosephAttia,“生成”的意思是“创造”。当我运行“build”命令时,在 dist 文件夹中创建了一个 css 文件。我感兴趣的是是否可以通过创建 2 个 CSS 文件的方式设置 react-static - 用于主页和关于页面 【参考方案1】:

经过一番研究,我发现它在 react-static Docs 中有描述。有一个选项extractCssChunks可以添加到static.config.js

export default 
  extractCssChunks: true,
  getRoutes: async () => 
    return [
      
        path: '/',
        template: 'src/pages/MainPage/MainPage.js',
      ,
      
        path: 'about',
        template: 'src/pages/AboutPage/AboutPage.js',
      ,
    ]
  ,
  plugins: [
    require.resolve('react-static-plugin-sass'),
    require.resolve('react-static-plugin-reach-router'),
    require.resolve('react-static-plugin-sitemap'),
  ],

它完全满足了我的需要——它可以通过路由自动将 CSS 拆分为单独的文件

【讨论】:

以上是关于如何在 react-static 中为每个页面生成单独的 css 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在aspx页面中为href生成url

如何在 scss 文件中的 react-static 构建中设置图像的 url

如何在 Hibernate 中为每个公司创建一个 customerNumber 生成器

如何在Active Admin中为自定义生成的页面添加导出为csv选项

为报表选择多个参数,如何在参数列表中为每个项目创建多个页面?

如何在laravel中为每个用户生成唯一的随机值并将其添加到数据库中