lanetrotro
lanetrotro

Reputation: 357

adding custom fonts to storybook

i'm making a component library that i use through my applications, it work fine but when i added my custom fonts used by my icons, my storybook couldn't start anymore (the lib and the Icon component is still working).

this is how I imported my files

in my .storybook/main.js

const postcss = require("postcss");

module.exports = {
  stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-interactions",
    "@storybook/preset-scss",
    {
       name: "@storybook/addon-postcss",
       options: {
         cssLoaderOptions: {,
           importLoaders: 1,
         },
         postcssLoaderOptions: {
           implementation: postcss,
         },
       },
     },
  ],
  framework: "@storybook/react",
  core: {
    builder: "@storybook/builder-webpack5",
  },
};

in my src/styles/index.scss

@import "fonts";
@import "colors";
@import "sizes";
@import "icons/icons";

*,
*::before,
*::after {
  box-sizing: border-box;
}

// etc

in stc/styles/icons/icons.scss

@import "my-icons-variables";
$icomoon-font-family: "my-icons" !default;
$icomoon-font-path: "./fonts" !default;

@font-face {
  font-family: '#{$icomoon-font-family}';
  src: url('#{$icomoon-font-path}/#{$icomoon-font-family}.woff2') format('woff2'),
  url('#{$icomoon-font-path}/#{$icomoon-font-family}.ttf') format('truetype'),
  url('#{$icomoon-font-path}/#{$icomoon-font-family}.woff') format('woff'),
  url('#{$icomoon-font-path}/#{$icomoon-font-family}.svg##{$icomoon-font-family}') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

// etc

and all my icon font files are located in src/styles/icons/fonts/*

when i try to run my storybook i got this kind of errors

ModuleNotFoundError: Module not found: Error: Can't resolve './fonts/my-icons.woff2' in '/home/victor/dev/design-components/src/components/layout/section'
    at /home/victor/dev/design-components/node_modules/webpack/lib/Compilation.js:2016:28
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:798:13
    at eval (eval at create (/home/victor/dev/design-components/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:10:1)
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:270:22
    at eval (eval at create (/home/victor/dev/design-components/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:9:1)
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:434:22
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:116:11
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:670:25
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:855:8
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:975:5
    at /home/victor/dev/design-components/node_modules/neo-async/async.js:6883:13
    at Array.<anonymous> (/home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:950:14)
    at arrayEachFunc (/home/victor/dev/design-components/node_modules/neo-async/async.js:2517:19)
    at Object.parallel (/home/victor/dev/design-components/node_modules/neo-async/async.js:6858:9)
    at NormalModuleFactory._resolveResourceErrorHints (/home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:873:12)
    at /home/victor/dev/design-components/node_modules/webpack/lib/NormalModuleFactory.js:834:18
    at finishWithoutResolve (/home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:312:11)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:386:15
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:16:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:27:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:87:43
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:16:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/forEachBail.js:16:12
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/AliasPlugin.js:125:14
    at next (/home/victor/dev/design-components/node_modules/enhanced-resolve/lib/forEachBail.js:14:3)
    at forEachBail (/home/victor/dev/design-components/node_modules/enhanced-resolve/lib/forEachBail.js:24:9)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/AliasPlugin.js:51:5
    at _next0 (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:8:1)
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:30:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:16:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:16:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/RootsPlugin.js:37:38
    at _next2 (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:8:1)
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:31:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/ConditionalPlugin.js:40:47
    at _next1 (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:23:1)
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:46:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/ConditionalPlugin.js:40:47
    at _next0 (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:38:1)
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:60:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:27:1)
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:87:43
    at /home/victor/dev/design-components/node_modules/enhanced-resolve/lib/Resolver.js:435:5
    at eval (eval at create (/home/victor/dev/design-components/node_modules/enhanced-resolve/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:16:1)
resolve './fonts/my-icons.woff2' in '/home/victor/dev/design-components/src/components/layout/section'
  using description file: /home/victor/dev/design-components/package.json (relative path: ./src/components/layout/section)
    using description file: /home/victor/dev/design-components/package.json (relative path: ./src/components/layout/section/fonts/my-icons.woff2)
      no extension
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2 doesn't exist
      .mjs
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.mjs doesn't exist
      .js
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.js doesn't exist
      .jsx
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.jsx doesn't exist
      .ts
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.ts doesn't exist
      .tsx
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.tsx doesn't exist
      .json
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.json doesn't exist
      .cjs
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2.cjs doesn't exist
      as directory
        /home/victor/dev/design-components/src/components/layout/section/fonts/my-icons.woff2 doesn't exist

(this for each of my components)

Am I missing something maybe with a webpack conf ? or maybe I should not import the icons fonts this way ?

Upvotes: 2

Views: 744

Answers (0)

Related Questions