Подключить свою библиотеку React-компонентов к приложению Next

Есть библиотека с компонентами написанными на TypeScript+SASS. Сборка выполняется вебпаком (конфиг ниже). Подключаем в основной проект на Next через npm link. Всё работает хорошо, пока не подключаю лоадеры вебпака для стилей. Обычный style-loader провоциорует ошибку Reference Error: document is undefined по причине того, что приложение Next рендерит страницу дважды и на первом этапе это проиходит на сервере. Использовал плагин MiniExtractCssPlugin, но как готовый main.css подключить к проекту я не понял. Поскольку он в выходной директории сборки, пытался в основном проекте import 'ui-lib/main.css', но оно его не нашло. В процессе решение проблемы путём гуглежа натыкался на ошибки типа window is undefined и publicPath is not supported by this browser. Примерная струкутра бибилиотеки:

  • src/
    • components/ - папка со всеми компонентами

    • button/

      • index.tsx - компонент
      • index.module.scss - модуль со стилями
    • index.ts - файл с импортов всех компонентов их экспортом обьекта с ними.

  • конфиги

Как можно реализовать корректное подключение библиотеки компонентов к Next-приложению со всеми стилями и, желательно, не сломать возможность подключения к обычным CRA/React-приложениям?

Конфиг вебпака:

const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
    mode: 'production',
    target: 'web',
    entry: './src/index.ts',
    output: {
        filename: 'index.js',
        path: path.resolve(__dirname, 'dist'),
        clean: true,
        libraryTarget: 'umd',
        umdNamedDefine: true,
        globalObject: 'this',
    },
    resolve: {
        extensions: ['.ts', '.tsx'],
    },
    externals: {
        react: 'react',
        //next: 'next',
    },
    plugins: [new MiniCssExtractPlugin({ // Не разобрался как его выхлоп подключить в основной проект
        filename: "[name].css",
        chunkFilename: "[id].css",
    })],
    module: {
        rules: [
            {
                test: /\.scss/,
                use: ['style-loader', { loader: "css-loader", options: { modules: true } }, 'sass-loader'],
                exclude: /node_modules/,
            },
            {
                test: /\.(ts|tsx)?$/,
                use: ['ts-loader'],
                exclude: /node_modules/,
            }
        ],
    },
};

Ответы (1 шт):

Автор решения: Евгений

Разобрался: import 'ui-lib/dist/main.css'

→ Ссылка