Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Gatsby中的link标记将样式注入DOM_Javascript_Reactjs_Webpack_Gatsby - Fatal编程技术网

Javascript 使用Gatsby中的link标记将样式注入DOM

Javascript 使用Gatsby中的link标记将样式注入DOM,javascript,reactjs,webpack,gatsby,Javascript,Reactjs,Webpack,Gatsby,有没有办法配置gatsby使用链接标记插入样式文件 目前,我有一个全局样式(style.less),我使用。这没关系,但它会将所有CSS内容注入到每个页面中,并会影响页面大小 我想配置gatsby使用链接标记加载这个样式文件,而不是直接注入DOM。网页包有一个用于此目的的链接,但我找不到与盖茨比类似的链接。试试: exports.onCreateWebpackConfig = ({ actions, loaders, getConfig }) => { const config = g

有没有办法配置gatsby使用链接标记插入样式文件

目前,我有一个全局样式(style.less),我使用。这没关系,但它会将所有CSS内容注入到每个页面中,并会影响页面大小

我想配置gatsby使用链接标记加载这个样式文件,而不是直接注入DOM。网页包有一个用于此目的的链接,但我找不到与盖茨比类似的链接。

试试:

exports.onCreateWebpackConfig = ({ actions, loaders, getConfig }) => {
  const config = getConfig();

  config.module.rules = [
    ...config.module.rules.filter(rule => String(rule.test) !== String(/\.jsx?$/)),
    {
      test: /\.link\.css$/i,
      use: [
        { loader: `style-loader`, options: { injectType: `linkTag` } },
        { loader: `file-loader` },
      ],
    },
  ];
  actions.replaceWebpackConfig(config);
};
Gatsby允许您通过公开一些api(比如or)函数来定制web包的配置

如果您考虑到以下因素,那么代码是非常不言自明的。基本上,您正在为与正则表达式匹配的所有文件设置一些自定义加载程序,最后,使用
actions.replaceWebpackConfig(config)
覆盖默认配置

有关更多详细信息,请查看


此外,关于原始问题,您不需要在
布局组件中添加全局样式,因为它会导致您所说的内容,从而会影响页面大小。使用Gatsby,您可以使用添加全局样式,如(在
Gatsby browser.js
文件中):

检查您提供的链接()。

尝试:

exports.onCreateWebpackConfig = ({ actions, loaders, getConfig }) => {
  const config = getConfig();

  config.module.rules = [
    ...config.module.rules.filter(rule => String(rule.test) !== String(/\.jsx?$/)),
    {
      test: /\.link\.css$/i,
      use: [
        { loader: `style-loader`, options: { injectType: `linkTag` } },
        { loader: `file-loader` },
      ],
    },
  ];
  actions.replaceWebpackConfig(config);
};
Gatsby允许您通过公开一些api(比如or)函数来定制web包的配置

如果您考虑到以下因素,那么代码是非常不言自明的。基本上,您正在为与正则表达式匹配的所有文件设置一些自定义加载程序,最后,使用
actions.replaceWebpackConfig(config)
覆盖默认配置

有关更多详细信息,请查看


此外,关于原始问题,您不需要在
布局组件中添加全局样式,因为它会导致您所说的内容,从而会影响页面大小。使用Gatsby,您可以使用添加全局样式,如(在
Gatsby browser.js
文件中):

检查您提供的链接()。

这可能会有帮助:这可能会有帮助: