webpack 在"storybook js"中提供静态文件

fnatzsnv  于 2023-11-19  发布在  Webpack
关注(0)|答案(4)|浏览(130)

我正在使用故事书文档,无法从assets文件夹加载图像。正如documentations所说:“如果您使用自定义Webpack配置,您需要将文件加载器添加到自定义Webpack配置中”-我的webpack.config文件看起来像:

  1. const path = require('path');
  2. module.exports = ({ config }) => {
  3. config.module.rules.push({
  4. test: /\.scss$/,
  5. use: ['style-loader', 'css-loader', 'sass-loader']
  6. });
  7. config.module.rules.push({
  8. test: /\.(ts|tsx)$/,
  9. use: [
  10. {
  11. loader: require.resolve('awesome-typescript-loader'),
  12. },
  13. ],
  14. });
  15. config.module.rules.push({
  16. test: /\.(svg|png|jpe?g|gif)$/i,
  17. use: [
  18. {
  19. loader: 'file-loader',
  20. },
  21. ]
  22. },);
  23. config.resolve.extensions.push('.ts', '.tsx')
  24. return config;
  25. };

字符串
package.json:

  1. "react": "^16.10.1",
  2. "react-dom": "^16.10.1",
  3. "typescript": "^3.6.3",
  4. "@storybook/react": "^5.2.1",
  5. "@types/storybook__react": "^4.0.2",
  6. "file-loader": "^4.2.0"


这是在Yarn故事书x1c 0d1x之后
似乎故事书文档中缺少了一些东西,或者我做错了什么:?谢谢你,谁能帮我解决这个问题。^_^

js81xvg6

js81xvg61#

在storybook-start脚本中配置静态文件夹对我来说很有效:

文档:静态文件通过目录

您还可以配置一个目录(或目录列表),以便在启动Storybook时搜索静态内容。

  1. //package.json
  2. {
  3. "scripts": {
  4. "start-storybook": "start-storybook -s ./public -p 9001"
  5. }
  6. }

字符串
祝你好运...

展开查看全部
qqrboqgw

qqrboqgw2#

如果有人遇到同样的问题,尝试下面的代码(我使用:故事书,React-没有创建React应用程序, typescript ):
第一个问题是关于typescript的,这是对我有用的:我在根文件夹中创建了自定义.d.ts文件,并将此代码放入其中:

  1. declare module "*.svg" {
  2. const content: string;
  3. export default content;
  4. }
  5. declare module "svg-inline-react"

字符串
然后我将这个文件添加到tsll.json中,如下所示:

  1. "files": [
  2. "./custom.d.ts"
  3. ],


在那之后,错误-“couldn 't find imageName.svg”消失了,但是svg-inline-react仍然没有显示图标,现在问题在'webpack.js.js'文件中,下面写了修复代码。

  1. const path = require('path');
  2. module.exports = ({ config }) => {
  3. config.module.rules = config.module.rules.map( data => {
  4. // This overrides default svg rouls of storybook, and after that we can use
  5. //svg-inline-loader.
  6. if (/svg\|/.test( String( data.test ) ))
  7. data.test = /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|cur|ani)
  8. (\?.*)?$/;
  9. return data;
  10. });
  11. config.module.rules.push({
  12. test: /\.scss$/,
  13. use: ['style-loader', 'css-loader', 'sass-loader'],
  14. });
  15. config.module.rules.push({
  16. test: /\.(ts|tsx)$/,
  17. use: [
  18. {
  19. loader: require.resolve('awesome-typescript-loader'),
  20. },
  21. ],
  22. });
  23. config.module.rules.push({
  24. test: /\.svg$/,
  25. include: path.resolve(__dirname, '../'),
  26. loader: 'svg-inline-loader'
  27. });
  28. config.resolve.extensions.push('.ts', '.tsx')
  29. return config;
  30. };


^_^

展开查看全部
pokxtpni

pokxtpni3#

修复方法:

我的文件夹结构如下

  1. # root_folder
  2. .storybook/
  3. src/
  4. package.json
  5. ...
  6. ...

字符串
我的图像文件夹位于src/resources/images/my_image.jpg
我通过添加-s ./修复了这个问题,

  1. "storybook": "start-storybook -s ./ -p 9001"


希望有帮助:)💃🏻

展开查看全部
vshtjzan

vshtjzan4#

在最新版本的Storybook中(撰写本文时为版本7),推荐使用staticDirs配置元素。示例:

  1. module.exports = {
  2. staticDirs: ['../public', './static']
  3. };

字符串
我在从故事书版本6升级到版本7时偶然发现了这一点,以前我在CLI中使用-s,现在已经被删除了。
Source

相关问题