tom*_*zub 7 import alias typescript reactjs storybook
当我运行故事书时,我的别名将被忽略。当我运行我的项目时它工作得很好。
我尝试在 main.js 文件中定义所有别名,但效果不佳。你知道为什么吗 ?
我已经访问过此页面,我认为我做了正确的配置(?)https://storybook.js.org/docs/react/builders/webpack
下面是我的代码。
这是我的依赖项(package.json):
"@storybook/addon-a11y": "^6.5.16",
"@storybook/addon-postcss": "^2.0.0",
"storybook-addon-sass-postcss": "^0.1.3",
"storybook-react-i18next": "^1.1.2",
"@storybook/addon-actions": "^6.5.16",
"@storybook/addon-essentials": "^6.5.16",
"@storybook/addon-interactions": "^6.5.16",
"@storybook/addon-links": "^6.5.16",
"@storybook/builder-vite": "^0.4.0",
"@storybook/react": "^6.5.16",
"@storybook/testing-library": "^0.0.13"
Run Code Online (Sandbox Code Playgroud)
这是我的故事书配置文件(main.js)
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin')
const path = require('path')
module.exports = {
stories: [
"../packages/frontend/src/**/*.stories.mdx",
"../packages/frontend/src/**/*.stories.@(js|jsx|ts|tsx)"
],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions",
"storybook-react-i18next",
"@storybook/addon-a11y",
"@storybook/addon-postcss",
"storybook-addon-sass-postcss"
],
framework: "@storybook/react",
core: {
builder: "@storybook/builder-vite"
},
features: {
storyStoreV7: true
},
webpackFinal: async (config) => {
config.resolve.plugins = [
...(config.resolve.plugins || []),
new TsconfigPathsPlugin({
extensions: config.resolve.extensions,
}),
],
// FIXME - why alias not working ???
config.resolve.alias = {
...config.resolve.alias,
'@public': path.resolve(__dirname, '/public'),
'@internals/components': path.resolve(__dirname, '/src/components'),
'@internals/features': path.resolve(__dirname, '/src/features'),
'@internals/hooks': path.resolve(__dirname, '/src/hooks'),
'@internals/models': path.resolve(__dirname, '/src/models'),
'@internals/utils': path.resolve(__dirname, '/src/utils'),
'@internals/types': path.resolve(__dirname, '/src/types'),
'@internals/styles': path.resolve(__dirname, '/src/styles'),
'@internals/assets': path.resolve(__dirname, '/src/assets'),
'@internals/store': path.resolve(__dirname, '/src/store'),
'@internals/config': path.resolve(__dirname, '/src/config'),
'@internals/services': path.resolve(__dirname, '/src/services'),
}
// resolve baseUrl path set in tsconfig
config.resolve.modules = [
...(config.resolve.modules || []),
path.resolve(__dirname, "../packages/frontend/src/"),
];
config.module.rules.push({
test: /\.scss$/,
sideEffects: true, // scss is considered a side effect of sass
use: [
"style-loader",
"css-loader",
"sass-loader",
],
include: path.resolve(__dirname, "../packages/frontend/src/"),
})
return config
},
typescript: {
check: false,
checkOptions: {},
reactDocgen: 'none',
// reactDocgen: 'react-docgen-typescript',
reactDocgenTypescriptOptions: {
shouldExtractLiteralValuesFromEnum: true,
propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true),
},
},
}
Run Code Online (Sandbox Code Playgroud)
我的 Typescript 配置 (tsconfig.json)
{
"compilerOptions": {
"baseUrl": ".",
"target": "ES6",
"jsx": "react-jsx",
"allowJs": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"declaration": true,
"types": [
"vite/client",
"vitest"
],
"moduleResolution": "node",
"paths": {
"@internals/components/*": [
"./src/components/*"
],
"@internals/features/*": [
"./src/features/*"
],
"@internals/hooks/*": [
"./src/hooks/*"
],
"@internals/models/*": [
"./src/models/*"
],
"@internals/utils/*": [
"./src/utils/*"
],
"@internals/types/*": [
"./src/types/*"
],
"@internals/styles/*": [
"./src/styles/*"
],
"@internals/assets/*": [
"./src/assets/*"
],
"@internals/store/*": [
"./src/store/*"
],
"@internals/services/*": [
"./src/services/*"
],
"@internals/config/*": [
"./src/config/*"
],
"@public/*": [
"./public/*"
],
},
},
"files": [],
"include": ["src/**/*.ts", "src/**/*.tsx", "vitest.config.ts"],
"references": [
{
"path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
}
],
"extends": "../../tsconfig.base.json"
}
Run Code Online (Sandbox Code Playgroud)
我通过将其添加到 ,让别名在 Storybook 7 中与 NextJS 一起工作main.ts,基本上告诉 wepack 支持/appNextJS 页面和/shared我的组件所在文件夹的文件夹内的别名。
// .storybook/main.ts
async webpackFinal(config, { configType }) {
if (config?.resolve?.alias) {
config.resolve.alias = {
...config.resolve.alias,
"@/shared": path.resolve(__dirname, "../shared"),
"@/app": path.resolve(__dirname, "../app"),
}
}
return config
},
Run Code Online (Sandbox Code Playgroud)
|
|- .storybook
|
|- stories
| |
| - shared
| |
| - MyCustomComponent.stories.tsx
|
|- app
|
- shared
|
- MyCustomComponent.tsx
Run Code Online (Sandbox Code Playgroud)
main.tsimport type { StorybookConfig } from "@storybook/nextjs"
import path from "path"
const config: StorybookConfig = {
stories: ["../stories/**/*.mdx", "../stories/**/*.stories.@(js|jsx|ts|tsx)"],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions",
],
framework: {
name: "@storybook/nextjs",
options: {},
},
docs: {
autodocs: "tag",
},
staticDirs: ["../public"], // This loads images at localhost:6006/next.svg e.t.c.
async webpackFinal(config, { configType }) {
if (config?.resolve?.alias) {
config.resolve.alias = {
...config.resolve.alias,
"@/shared": path.resolve(__dirname, "../shared"),
"@/app": path.resolve(__dirname, "../app"),
}
}
return config
},
}
export default config
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |