在 "storybook js" 中提供静态文件
Serving static files in "storybook js"
我正在使用故事书文档,无法从资产文件夹加载图像。正如文档所说:"if you are using a custom Webpack config, you need to add the file-loader into your custom Webpack config" - 我的 webpack.config 文件看起来像:
const path = require('path');
module.exports = ({ config }) => {
config.module.rules.push({
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
});
config.module.rules.push({
test: /\.(ts|tsx)$/,
use: [
{
loader: require.resolve('awesome-typescript-loader'),
},
],
});
config.module.rules.push({
test: /\.(svg|png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
},
]
},);
config.resolve.extensions.push('.ts', '.tsx')
return config;
};
package.json:
"react": "^16.10.1",
"react-dom": "^16.10.1",
"typescript": "^3.6.3",
"@storybook/react": "^5.2.1",
"@types/storybook__react": "^4.0.2",
"file-loader": "^4.2.0"
这是在纱线故事书之后
似乎故事书文档中缺少某些内容,或者我做错了什么:?谢谢谁能帮我解决这个问题。 ^_^
如果有人遇到同样的问题,请尝试下面的代码(我正在使用:storybook,react - 没有创建 react app,typescript):
第一期是关于打字稿的,这是对我有用的:
我在根文件夹中创建了 custom.d.ts 文件并将此代码放入其中:
declare module "*.svg" {
const content: string;
export default content;
}
declare module "svg-inline-react"
然后我将这个文件添加到 tsconfig.json 中,如下所示:
"files": [
"./custom.d.ts"
],
之后错误-"could't find imageName.svg"消失了,但是svg-inline-react还是没有显示图标,现在问题出在'webpack.config.js'文件里面,修正代码写在下面。
const path = require('path');
module.exports = ({ config }) => {
config.module.rules = config.module.rules.map( data => {
// This overrides default svg rouls of storybook, and after that we can use
//svg-inline-loader.
if (/svg\|/.test( String( data.test ) ))
data.test = /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|cur|ani)
(\?.*)?$/;
return data;
});
config.module.rules.push({
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
});
config.module.rules.push({
test: /\.(ts|tsx)$/,
use: [
{
loader: require.resolve('awesome-typescript-loader'),
},
],
});
config.module.rules.push({
test: /\.svg$/,
include: path.resolve(__dirname, '../'),
loader: 'svg-inline-loader'
});
config.resolve.extensions.push('.ts', '.tsx')
return config;
};
^_^
在 storybook-start 脚本中配置静态文件夹对我有用:
文档:Static Files Via Directory
You can also configure a directory (or a list of directories) for
searching static content when you are starting Storybook. You can do
that with the -s flag.
//package.json
{
"scripts": {
"start-storybook": "start-storybook -s ./public -p 9001"
}
}
祝你好运...
解决这个问题:
我有以下文件夹结构
# root_folder
.storybook/
src/
package.json
...
...
我的图片文件夹位于 src/resources/images/my_image.jpg
我通过添加 -s ./
解决了这个问题
"storybook": "start-storybook -s ./ -p 9001"
希望对您有所帮助 :)
我正在使用故事书文档,无法从资产文件夹加载图像。正如文档所说:"if you are using a custom Webpack config, you need to add the file-loader into your custom Webpack config" - 我的 webpack.config 文件看起来像:
const path = require('path');
module.exports = ({ config }) => {
config.module.rules.push({
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
});
config.module.rules.push({
test: /\.(ts|tsx)$/,
use: [
{
loader: require.resolve('awesome-typescript-loader'),
},
],
});
config.module.rules.push({
test: /\.(svg|png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
},
]
},);
config.resolve.extensions.push('.ts', '.tsx')
return config;
};
package.json:
"react": "^16.10.1",
"react-dom": "^16.10.1",
"typescript": "^3.6.3",
"@storybook/react": "^5.2.1",
"@types/storybook__react": "^4.0.2",
"file-loader": "^4.2.0"
这是在纱线故事书之后
似乎故事书文档中缺少某些内容,或者我做错了什么:?谢谢谁能帮我解决这个问题。 ^_^
如果有人遇到同样的问题,请尝试下面的代码(我正在使用:storybook,react - 没有创建 react app,typescript):
第一期是关于打字稿的,这是对我有用的: 我在根文件夹中创建了 custom.d.ts 文件并将此代码放入其中:
declare module "*.svg" {
const content: string;
export default content;
}
declare module "svg-inline-react"
然后我将这个文件添加到 tsconfig.json 中,如下所示:
"files": [
"./custom.d.ts"
],
之后错误-"could't find imageName.svg"消失了,但是svg-inline-react还是没有显示图标,现在问题出在'webpack.config.js'文件里面,修正代码写在下面。
const path = require('path');
module.exports = ({ config }) => {
config.module.rules = config.module.rules.map( data => {
// This overrides default svg rouls of storybook, and after that we can use
//svg-inline-loader.
if (/svg\|/.test( String( data.test ) ))
data.test = /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|cur|ani)
(\?.*)?$/;
return data;
});
config.module.rules.push({
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
});
config.module.rules.push({
test: /\.(ts|tsx)$/,
use: [
{
loader: require.resolve('awesome-typescript-loader'),
},
],
});
config.module.rules.push({
test: /\.svg$/,
include: path.resolve(__dirname, '../'),
loader: 'svg-inline-loader'
});
config.resolve.extensions.push('.ts', '.tsx')
return config;
};
^_^
在 storybook-start 脚本中配置静态文件夹对我有用:
文档:Static Files Via Directory
You can also configure a directory (or a list of directories) for searching static content when you are starting Storybook. You can do that with the -s flag.
//package.json
{
"scripts": {
"start-storybook": "start-storybook -s ./public -p 9001"
}
}
祝你好运...
解决这个问题:
我有以下文件夹结构
# root_folder
.storybook/
src/
package.json
...
...
我的图片文件夹位于 src/resources/images/my_image.jpg
我通过添加 -s ./
解决了这个问题
"storybook": "start-storybook -s ./ -p 9001"
希望对您有所帮助 :)