我正在尝试在 nrwl-nx monorepo 中设置共享样式和资产(即字体)以用于库和应用程序。
我想要的结果是有一个图书馆“主题”,提供
- 共享样式
- scss 变量和 mixins
- 字体
对于其他库和应用程序。
对于 1. 和 2. 我在这里找到了一个很好的答案:How to manage SCSS stylesheets across a monorepo with different libraries sharing variables?
Tim Consolazio 提出了一种很好的(并且受 Nrwl 启发)方法来处理跨 monorepo 的共享样式。基本思想是有一个入口点 scss inlibs/theme/scss/src/lib/theme.scss
被导入apps/myapp/src/styles.scss
. 这工作正常。
我遇到的困难是让它与提供要在共享样式中使用的字体一起工作,即我有一个libs/theme/scss/src/lib/fonts.scss
从主题库中的资产文件夹中导入字体的工具。
项目结构为
- apps
- myapp
- src
- styles.scss (@import 'theme' from the lib)
- libs
- theme
- assets
- src
- lib
- fonts
- myfont.ttf
...
- scss
- src
- lib
- fonts.scss
- theme.scss
- variables.scss
...
目标是在themes
库中拥有资产。我尝试添加到architect.build.assets
数组中angular.json
。但是在引用字体样式表中的字体时,我无法弄清楚要设置的正确路径:
@font-face {
font-family: 'My-Font';
src: url('./assets/fonts/myfont.eot');
src: url('./assets/fonts/myfont.eot?#iefix') format('embedded-opentype'),
url('./assets/fonts/myfont.woff2') format('woff2'),
url('./assets/fonts/myfont.woff') format('woff'),
url('./assets/fonts/myfont.ttf') format('truetype');
}
我错过了什么?