Задать вопрос

Как правильно настроить vite для сборки, что бы я мог импортировать css файл?

Всем привет, возникла проблема, учусь делать библиотеки для react.

Мой vite.config
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import dts from "vite-plugin-dts";
import { resolve } from "path";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), dts({ rollupTypes: true })],
  build: {
    lib: {
      entry: resolve(__dirname, "src", "index.ts"),
      name: "button-test-lib",
      formats: ["umd", "es"],
      fileName: (format) => `index.${format}.js`,
    },
    rollupOptions: {
      external: ["react", "react-dom"],
      output: {
        assetFileNames: "button-testing-lib.css",
        globals: {
          react: "react",
          "react-dom": "ReactDOM",
        },
      },
    },
  },
});


Мой tsconfig
{
  "compilerOptions": {
    "target": "ES2020",
    "useDefineForClassFields": true,
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "module": "ESNext",
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
    "declaration": true
  },
  "include": ["src"],
  "references": [{ "path": "./tsconfig.node.json" }]
}


Мой package.json
{
  "name": "button-test-lib",
  "files": [
    "dist"
  ],
  "main": "./dist/index.umd.js",
  "module": "./dist/index.es.js",
  "style": "./dist/button-testing-lib.css",
  "exports": {
    ".": {
      "import": "./dist/index.es.js",
      "require": "./dist/index.umd.js"
    }
  },
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "sass": "^1.68.0"
  },
  "devDependencies": {
    "@types/node": "^20.8.2",
    "@types/react": "^18.2.15",
    "@types/react-dom": "^18.2.7",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "@vitejs/plugin-react-swc": "^3.3.2",
    "eslint": "^8.45.0",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-react-refresh": "^0.4.3",
    "typescript": "^5.0.2",
    "vite": "^4.4.5",
    "vite-plugin-dts": "^3.6.0"
  }
}


Проблема в том, что он генерирует файл button-testing-lib.css, но почему то подключить я его не могу никак, выдает вот такую вот ошибку
651d3ed882526054465006.png

Подключал библиотеку через npm link

Компоненты и все остальное подулючается, а вот стили
вот таким вот образом нет
import {FC} from "react";
import {Button, type IProps} from "button-test-lib"
import "button-test-lib/dist/button-testing-lib.css";

const App:FC<IProps> = ({name, lastName}) => {


    return (
        <div>
            <Button variant="variant1">test</Button>
            {name} {lastName}
        </div>
    );
};

export default App;
  • Вопрос задан
  • 857 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
@peretc001
Нашел такое решение

в vite.config.js добавляем алиса
resolve: {
    alias: {
      'npm-library-name': path.resolve(
        __dirname,
        'node_modules/npm-library-name/build/'
      )
    }
  },


и в index.js импортируем стили
import 'npm-library-name/style.css'

а вот с webpack нифига не работает, тоже алиас есть, тоже стили подключает, не ругается. Но самих стилей нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽