Javascript 带有React、打字脚本和SASS的故事书
这是我在.storybook文件夹中的webpack.config.jsJavascript 带有React、打字脚本和SASS的故事书,javascript,reactjs,webpack,storybook,Javascript,Reactjs,Webpack,Storybook,这是我在.storybook文件夹中的webpack.config.js const path = require('path'); const TSDocgenPlugin = require('react-docgen-typescript-webpack-plugin'); module.exports = (baseConfig, env, defaultConfig) => { defaultConfig.module.rules.push({ test: /\.(t
const path = require('path');
const TSDocgenPlugin = require('react-docgen-typescript-webpack-plugin');
module.exports = (baseConfig, env, defaultConfig) => {
defaultConfig.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve('awesome-typescript-loader')
});
defaultConfig.plugins.push(new TSDocgenPlugin());
defaultConfig.resolve.extensions.push('.ts', '.tsx');
return defaultConfig;
};
这是我的tsconfig.json
config文件
{
"compilerOptions": {
"outDir": "build/lib",
"module": "commonjs",
"target": "es5",
"lib": ["es5", "es6", "es7", "es2017", "dom"],
"sourceMap": true,
"allowJs": false,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"baseUrl": "src",
"types": ["node"]
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"declaration": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true
"typeRoots": [
"node_modules/@types"
]
},
"include": ["src/**/*", "types/**/*"],
"exclude": ["node_modules", "build", "scripts"]
}
当我尝试在any react组件中导入任何scss
文件时,我发现模块未找到错误
import style from './Button.scss'
请指导我如何配置
webpack.config.js
以在我的tsx文件中支持scss导入,TypeScript从来没有这样做过,但我想你必须按照自己的规则来做:
{
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
},
因此,您的webpack.config.js
如下所示:
const path = require('path');
const TSDocgenPlugin = require('react-docgen-typescript-webpack-plugin');
module.exports = (baseConfig, env, defaultConfig) => {
defaultConfig.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve('awesome-typescript-loader')
});
defaultConfig.module.rules.push({
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
});
defaultConfig.plugins.push(new TSDocgenPlugin());
defaultConfig.resolve.extensions.push('.ts', '.tsx');
return defaultConfig;
};
别忘了将加载器添加到您的包中。json
从来没有使用过TypeScript,但我想您必须在规则中加入类似的内容:
{
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
},
因此,您的webpack.config.js
如下所示:
const path = require('path');
const TSDocgenPlugin = require('react-docgen-typescript-webpack-plugin');
module.exports = (baseConfig, env, defaultConfig) => {
defaultConfig.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve('awesome-typescript-loader')
});
defaultConfig.module.rules.push({
test: /\.scss$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'sass-loader' }],
});
defaultConfig.plugins.push(new TSDocgenPlugin());
defaultConfig.resolve.extensions.push('.ts', '.tsx');
return defaultConfig;
};
不要忘记将加载程序添加到您的包.json