Каким образом оптимально разместить нескомпилированный пакет в npm?

Привет всем! У меня есть набор React-компонентов, которые я разработал для стека, используемого на работе. Я не хочу компилировать их в готовый бандл, предпочитая, чтобы сборщик проекта выполнял эту задачу. <br/> <br/> В настоящее время, когда я импортирую свои компоненты из папки проекта, все работает корректно. Но как мне сделать так, чтобы они также импортировались из node_modules? Желательно без изменения конфигураций стека. В данный момент я сталкиваюсь с ошибкой "Module parse failed: Unexpected token", вероятно, из-за проблем с распознаванием JSX.
  • 28 августа 2024 г. 15:34
Ответы на вопрос 2
Чтобы оптимально разместить несомпилированный пакет React-компонентов в npm и сделать его доступным для импорта из `node_modules`, вы можете следовать этим шагам:

1. **Структура проекта**: Убедитесь, что структура вашего проекта правильная. Например:

   ```
   my-react-components/
   ├── src/
   │   ├── ComponentA.jsx
   │   ├── ComponentB.jsx
   │   └── index.js
   ├── package.json
   └── README.md
   ```

   В `index.js` вы можете экспортировать свои компоненты:

   ```javascript
   export { default as ComponentA } from './ComponentA';
   export { default as ComponentB } from './ComponentB';
   ```

2. **Настройка `package.json`**: Убедитесь, что в вашем `package.json` указаны правильные настройки:

   ```json
   {
     "name": "my-react-components",
     "version": "1.0.0",
     "main": "src/index.js",
     "scripts": {
       "build": "echo 'No build step needed'"
     },
     "peerDependencies": {
       "react": "^17.0.0",  // или подходящая версия
       "react-dom": "^17.0.0"
     }
   }
   ```

   Поле `main` указывает на файл, который будет импортироваться, когда кто-то устанавливает ваш пакет.

3. **Настройка `.npmignore` или `files` в `package.json`**: Убедитесь, что вы указываете, какие файлы должны быть включены в пакет. Вы можете использовать файл `.npmignore` или поле `files` в `package.json`.

   Пример `.npmignore` (если вы используете .npmignore):

   ```
   node_modules/
   src/
   test/
   ```

   Либо используйте `files`:

   ```json
   {
     "files": [
       "src/"
     ]
   }
   ```

4. **Публикация пакета**: Запустите `npm publish` для публикации вашего пакета в npm. Убедитесь, что у вас есть необходимый доступ для публикации.

5. **Использование в других проектах**: После успешной публикации вы можете установить ваш пакет в другом проекте с помощью:

   ```
   npm install my-react-components
   ```

6. **Импорт компонентов**: Теперь вы можете импортировать компоненты из вашего пакета в других проектах:

   ```javascript
   import { ComponentA, ComponentB } from 'my-react-components';
   ```

7. **Обработка JSX**: Если вы всё ещё получаете ошибку "Module parse failed: Unexpected token", убедитесь, что ваш инструмент сборки (например, Webpack, Babel) в проекте, где вы используете ваши компоненты, правильно настроен для обработки JSX. Это может потребовать добавления правила для обработки `.jsx` файлов с использованием подходящих загрузчиков (loaders).

Если вы следовали этим шагам и настройки сборки в проектах, использующих ваш пакет, правильно настроены, ваши компоненты должны корректно импортироваться и работать.
Видимо, проблемки с пониманием jsx

Я смотрю вы намёков совсем не понимаете)) Зачем это всё? Зачем надеяться на сборщик каждого проекта? Собирайте и не выдумывайте проблему на ровном месте.
Похожие вопросы