首页 > 其他分享 >storybook添加全局样式与sass全局变量设置

storybook添加全局样式与sass全局变量设置

时间:2023-03-18 12:55:47浏览次数:50  
标签:src resolve sass loader storybook path 全局变量 config

storybook组件需要全局样式,只需在.storybook/preview.js 增加全局样式即可。

import '../src/style/index.scss';
export const parameters = {
  actions: { argTypesRegex: "^on[A-Z].*" },
  controls: {
    expanded: true,
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
}

但是,sass全局变量添加有麻烦。

网上查找了,大致有2种,第一种:https://blog.csdn.net/weixin_38303684/article/details/113921118

const path = require('path')
module.exports = {
  "stories": [
    "../src/**/*.stories.mdx",
    "../src/**/*.stories.@(js|jsx|ts|tsx)"
  ],
  "addons": [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/preset-create-react-app"
  ],
  webpackFinal: async (config, { configType }) => {
    // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.

    // Make whatever fine-grained changes you need
    config.module.rules.push({
      test: /\.scss$/,
      use: ['style-loader', 'css-loader', 'sass-loader'],
      include: path.resolve(__dirname, '../'),
      options:{
          additionalData: `@import "${path.resolve(__dirname, '../src/style/variables.scss')}";`
      }
    });

    // Return the altered config
    return config;
  },
}

第二种,在.storybook文件夹中创建一个webpack.config.js文件解决了我的问题:

module.exports = (storybookBaseConfig, configType, defaultConfig) => {

  defaultConfig.module.rules.push(
    {
      resourceQuery: /module/,
      use: [
        {
          loader: 'vue-style-loader',
          options: {
            sourceMap: false,
            shadowMode: false
          }
        },
        {
          loader: 'css-loader',
          options: {
            sourceMap: false,
            importLoaders: 2,
            modules: true,
            localIdentName: '[name]_[local]_[hash:base64:5]'
          }
        },
        {
          loader: 'postcss-loader',
          options: {
            sourceMap: false
          }
        },
        {
          loader: 'sass-loader',
          options: {
            sourceMap: false,
            indentedSyntax: true,
            data: '@import "@/sass/_variables.scss";'
          }
        }
      ]
    }
  );

  return defaultConfig;};

但是都没有效果,

这两种方法,都需要全局安装一些loader,但是的cli 项目是不需要全局变量

所以,我就直接改了成可用的。

const path = require('path');

function resolve(dir) {
  return path.join(__dirname, dir);
}
module.exports = {
  "stories": [
    "../src/**/*.stories.mdx",
    "../src/**/*.stories.@(js|jsx|ts|tsx)"
  ],
  "addons": [
    '@storybook/preset-scss',
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-interactions"
  ],
  "framework": "@storybook/vue3",
  "core": {
    "builder": "@storybook/builder-webpack5"
  },
  webpackFinal: async (config, { configType }) => {
    // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.
    config.resolve = {
      ...config?.resolve,
      alias:{
        ...config?.resolve?.alias,
        '@': resolve('src'),
      }

    }
    // Make whatever fine-grained changes you need
    config.module.rules[6].use[2].options = {
      additionalData: `@import "${path.resolve(__dirname, '../src/style/variables.scss')}";`
    }

    // Return the altered config
    return config;
  },
}

这个改动对storybook 6.5.14 是生效。

 

 


转载本站文章《storybook添加全局样式与sass全局变量设置》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/storybook/8894.html

标签:src,resolve,sass,loader,storybook,path,全局变量,config
From: https://www.cnblogs.com/zhoulujun/p/17229748.html

相关文章

  • storybook 编写stories的story基础语法
    编写storiesstory用于展示组件某个状态,每个组件可以包含任意多个story,用来测试组件的各种场景。根据默认配置,只需要在组件的文件夹中,以 **.component.stories.ts 的......
  • storybook插件说明: integrations与addons推荐
    官方的:https://storybook.js.org/integrations/https://github.com/storybookjs/storybook/blob/master/ADDONS_SUPPORT.md 我所推荐的的三个: yarn add -D @stor......
  • 如何在jvm dump出的堆文件中查看指定成员数据,或者全局变量
    很多时候,当程序OOM或者其他异常情况时,我们需要搞清楚当时应用内部数据情况,所有某些时候我们需要查看当时内存镜像中某些成员变量的值。比如查看当时内存实例中数据库账号,......
  • less和sass优缺点对比
    1.编译难度sass: node-sass安装经常报错,而且与nodejs版本绑定,不再更新,dart-sass为纯js实现,性能待提升less:  编译容易,安装无压力2.语法2.1 循环sass有多种循环......
  • vue的路由实现及sass
    day27vue的路由实现及sass路由前端路由根据对应的url地址来渲染不同的内容前端路由的分类页面路由(通过页面的跳转来完成对应的切换(刷新页面))hash路由(通过对应的......
  • QT5笔记: 8. QT的全局变量(基本数据类型、函数、宏)
    这个头文件中存放着QT类库的一些全局定义,一般Qt类的头文件会包含这个头文件:基本数据类型函数宏数据类型:保证跨平台时各数据类型长度统一函数定义(一些数......
  • 项目构建node-sass源码报错 SyntaxError:Unexpectedtoken"?"
    背景vue2项目,之前一直构建正常。今天改了代码,构建时报错,报错原因显示编译node-sass源码时出错。报错信息:Modulebuildfailed:/node_modules/node-sass/sass.dart.js:19......
  • sass_learn_youtube_mixin_extend
    vscode中的livesasscomplier插件文件分离第四行,导入_header.sass文件mixin将重复使用的flexCenter作为一个mixin抽离出来,类似函数一到五行,mixin;第十行,使......
  • 好客租房120-在脚手架中使用sass
    1打开脚手架的文档添加sass样式2安装sassyarnaddnode-sass3创建后缀名称为scss或者sass的文件4引入文件渲染文件.nav{padding:10px;img{width:48......
  • global 全局变量
    globalglobal关键字的作用:声明变量var是全局的。改变全局变量的值,函数内赋值并不能改变全局变量的值,所以需要global关键字str='global'deffunc1():globalstr......