webpack 重写nrwl/nx React js项目中的字体URL

qxgroojn  于 2023-01-21  发布在  Webpack
关注(0)|答案(1)|浏览(180)

我有一个nrwl/nxReact生成的应用程序,使用SCSS进行样式设置。在SCSS中导入字体或图像文件时,编译后的SCSS假设字体/图像将位于同一目录中。

示例SCSS:

@font-face {
  font-family: "X";
  src: url("./assets/fonts/X.woff");
  font-weight: 400;
  font-style: italic;
}

编制的SCSS:

@font-face {
  font-family: "boreal";
  **src: url("x.woff");**
  font-weight: 400;
  font-style: italic;
}

注意,字体URL被重写为在样式表所在的目录中获取。
有没有办法重写CSS URL?就像在普通Webpack中使用publicURL一样?
我曾尝试使用文件加载器尝试重命名字体的网址,但没有效果。

项目.json:

"targets" : {
   "build": {
     // ...
     "webpackConfig": "apps/my-application/webpack.config.js"
   }
}

网络包配置js:

module.exports = (config, context) => {
  nrwlConfig(config);
  return {
    ...config,
    module: {
      ...config.module,
      rules: [
        ...config.module.rules,
        {
          loader: require.resolve('file-loader'),
          test: /\.(woff(2)?|ttf|eot|svg)?$/,
          options: {
            name: '[name].[ext]',
            publicPath: '../../custom-folder',
          },
        },
      ],
    },
//...
jtw3ybtb

jtw3ybtb1#

我曾在一个项目中使用类似的技术(Nx,webpack和Sass),我用来解决这个问题的解决方案是在我的index.html上“导入”我的本地字体,您应该按照下面的步骤来实现这个方法:
1.创建一个包含字体文件的“fonts”文件夹。
1.在./fonts中创建一个.css文件,用于导出和格式化字体
@字体外观{字体系列:Lato;源代码:url(“Lato-常规. woff”)格式(“woff”)}
1.使用./index.html上的标记在项目中使用localFont。

<link rel='preload' href='/assets/fonts/Lato/Lato-Regular.woff' as='font' type='font/woff' crossorigin>
<link rel='stylesheet' href='/assets/fonts/Lato/lato.css' as='style'>

1.在你的根sass文件中创建一个变量来保存那个字体。

:root {
      --base-font: 'Lato', sans-serif;
    }

就这样,我希望这能解决你的问题。

相关问题