102 lines
2.7 KiB
TypeScript
102 lines
2.7 KiB
TypeScript
// Copyright 2022 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { StorybookConfig } from '@storybook/react-webpack5';
|
|
import { ProvidePlugin } from 'webpack';
|
|
|
|
const config: StorybookConfig = {
|
|
typescript: {
|
|
reactDocgen: false,
|
|
},
|
|
stories: ['../ts/components/**/*.stories.tsx'],
|
|
addons: [
|
|
'@storybook/addon-a11y',
|
|
'@storybook/addon-actions',
|
|
'@storybook/addon-controls',
|
|
'@storybook/addon-measure',
|
|
'@storybook/addon-toolbars',
|
|
'@storybook/addon-viewport',
|
|
'@storybook/addon-jest',
|
|
|
|
// This must be imported last.
|
|
'@storybook/addon-interactions',
|
|
],
|
|
framework: '@storybook/react-webpack5',
|
|
core: {},
|
|
features: {
|
|
storyStoreV7: true,
|
|
},
|
|
staticDirs: [
|
|
{ from: '../fonts', to: 'fonts' },
|
|
{ from: '../images', to: 'images' },
|
|
{ from: '../fixtures', to: 'fixtures' },
|
|
{
|
|
from: '../node_modules/emoji-datasource-apple/img',
|
|
to: 'node_modules/emoji-datasource-apple/img',
|
|
},
|
|
],
|
|
webpackFinal(config) {
|
|
config.cache = {
|
|
type: 'filesystem',
|
|
};
|
|
|
|
config.resolve!.extensions = ['.tsx', '.ts', '...'];
|
|
|
|
config.module!.rules!.unshift({
|
|
test: /\.scss$/,
|
|
use: [
|
|
{ loader: 'style-loader' },
|
|
{ loader: 'css-loader', options: { modules: false, url: false } },
|
|
{ loader: 'sass-loader' },
|
|
],
|
|
});
|
|
|
|
config.module!.rules!.unshift({
|
|
test: /\.css$/,
|
|
use: [
|
|
// prevent storybook defaults from being applied
|
|
],
|
|
});
|
|
|
|
config.node = { global: true };
|
|
|
|
config.externals = {
|
|
net: 'commonjs net',
|
|
vm: 'commonjs vm',
|
|
fs: 'commonjs fs',
|
|
async_hooks: 'commonjs async_hooks',
|
|
module: 'commonjs module',
|
|
stream: 'commonjs stream',
|
|
tls: 'commonjs tls',
|
|
dns: 'commonjs dns',
|
|
http: 'commonjs http',
|
|
https: 'commonjs https',
|
|
os: 'commonjs os',
|
|
constants: 'commonjs constants',
|
|
zlib: 'commonjs zlib',
|
|
'@signalapp/libsignal-client': 'commonjs @signalapp/libsignal-client',
|
|
'@signalapp/libsignal-client/zkgroup':
|
|
'commonjs @signalapp/libsignal-client/zkgroup',
|
|
'@signalapp/ringrtc': 'commonjs @signalapp/ringrtc',
|
|
'@signalapp/better-sqlite3': 'commonjs @signalapp/better-sqlite3',
|
|
electron: 'commonjs electron',
|
|
'fs-xattr': 'commonjs fs-xattr',
|
|
fsevents: 'commonjs fsevents',
|
|
'mac-screen-capture-permissions':
|
|
'commonjs mac-screen-capture-permissions',
|
|
sass: 'commonjs sass',
|
|
bufferutil: 'commonjs bufferutil',
|
|
'utf-8-validate': 'commonjs utf-8-validate',
|
|
};
|
|
|
|
config.plugins!.push(
|
|
new ProvidePlugin({
|
|
Buffer: ['buffer', 'Buffer'],
|
|
})
|
|
);
|
|
|
|
return config;
|
|
},
|
|
};
|
|
|
|
export default config;
|