Создание библиотеки компонентов React с помощью приложения Create React

  • 22 апреля, 14:24
  • 7686
  • 0

Create React App - лучший инструмент для создания и разработки приложений React. Его также можно использовать для создания библиотеки компонентов React, которые можно публиковать в npm и использовать в других приложениях React. Вот что вам нужно сделать:

1. Создайте новый проект, используя create-react-app:

create-react-app simple-component-library

2. Удалите все файлы внутри src/ и создайте новый index.js файл с некоторым начальным кодом:

import React from "react"; import ReactDOM from "react-dom"; ReactDOM.render(<div>Hello world</div>, document.getElementById("root"));

3. Создайте новую папку src/lib и поместите ваши компоненты React внутри. src/lib будет служить корневой папкой модуля, опубликованного npm, вот код для примера компонента:

import React from "react"; import "./TextInput.css"; const TextInput = ({ type = "text", label, value, onChange }) => (   <div className="simple-form-group">     {label && <label className="simple-text-label">{label}</label>}     <input       type={type}       className="simple-text-input"       value={value}       onChange={e => onChange && onChange(e.target.value)}     />   </div> ); export default TextInput;

Стилизация может быть встроена или в отдельных файлах CSS:

.simple-form-group {   margin-bottom: 1rem; } .simple-text-label {   display: block;   color: red; } .simple-text-input {   display: inline-block;   margin-bottom: 0.5rem;   font-size: 16px;   font-weight: 400;   color: rgb(33, 37, 41); }

Наконец, компонент может быть экспортирован из src/lib для удобства:

import TextInput from "./TextInput"; export { TextInput };

При желании вы также можете написать тесты для компонентов внутри src/lib:

import React from "react"; import TextInput from "./TextInput"; import renderer from "react-test-renderer"; describe("TextInput", () => {   it("renders properly", () => {     const tree = renderer       .create(<TextInput label="Email" placeholder="name@example.com" />)       .toJSON();     expect(tree).toMatchSnapshot();   }); });

4. (Необязательно) Используйте компоненты в src/index.js создавая примеры для тестирования и отладки в процессе разработки. Любой код, размещенный вне src/lib не будет опубликовано в npm, вот пример использования TextInput:

import React from 'react'; import { render } from "react-dom"; import { TextInput } from "./lib"; const App = () => (   <div style={{ width: 640, margin: "15px auto" }}>     <h1>Hello React</h1>     <TextInput label="Email Address" placeholder="name@example.com" />   </div> ); render(<App />, document.getElementById("root"));

Ведите npm start и перейдите к http://localhost:3000, чтобы просмотреть результат.

5. Установите babel-cl i используя команду npm i babel-cli --save-dev  создайте файл .babelrc в корне проекта со следующим содержанием:

{   "presets": [["react-app", { "absoluteRuntime": false }]] }

6. Заменить build сценарий внутри package.json на следующий:

"build": "rm -rf dist && NODE_ENV=production babel src/lib --out-dir dist --copy-files --ignore __tests__,spec.js,test.js,__snapshots__"

Команда npm run build теперь будет переносить код внутри src/lib (игнорируя тесты) в папку dist

7. Удалите линию "private": true от package.json, также удалите eact-scripts .Кроме того, вы также можете добавить react и react-dom в peerDependencies

8. Чтобы подготовиться к публикации, добавьте следующие строки в package.json:

"main": "dist/index.js",   "module": "dist/index.js",   "files": [ "dist", "README.md" ],   "repository": {     "type": "git",     "url": "URL_OF_YOUR_REPOSITORY"   }

9. Удалите по умолчанию README.md файл, и создайте новый с некоторой информацией о библиотеке.

# simple-component-library A library of React components created using `create-react-app`.## Installation Run the following command: `npm install simple-component-library`

10. Опубликуйте в npm!

npm run publish

Вот и все! Теперь вы можете установить библиотеку с помощью команды npm install simple-component-library и использовать его в любом проекте, созданном с помощью Create React App. Вот полный код этой статьи:

aakashns/simple-component-library 

Вы можете клонировать репозиторий и использовать его в качестве отправной точки, чтобы пропустить некоторые шаги. Надеюсь, это поможет!

Источник перевода 


0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все