CLI для создания или редактирования реагирования или реагирования собственных компонентов с вашей собственной структурой
Через пряжу и интерактивный режим
$ yarn add -D reactcci
$ yarn rcci
или через NPM и флаги
$ npm i -D reactcci
$ npx rcci --name Header Body Footer --dest src/App
Чтобы установить через NPM:
npm install --save-dev reactcci
Чтобы установить через пряжу:
yarn add --dev reactcci
На первом запуске CLI спросит вас об автоматической конфигурации. Просто запустите команду:
npx rcci
Эта команда создает файл rcci.config.js и папку шаблона с основным набором шаблонов.
Файл конфигурации содержит следующие параметры:
folderPath
Корневой каталог для размещения ваших компонентов или массива пути
По умолчанию: src/
templatesFolder
Путь к собственным шаблонам компонентов
По умолчанию: templates
multiProject
Позволяет настроить конфигурацию для моно-репозиции с несколькими проектами
По умолчанию: false
skipFinalStep
Позволяет выключить последний шаг проверки
По умолчанию: false
checkExistenceOnCreate
Позволяет включить включение компонента.
По умолчанию: false
templates
Объект со структурой вашего компонента
processFileAndFolderName
Строка или функция, которая позволяет переоценить имя вашего компонента в плюс и префикс с именем файла
По умолчанию: PascalCase
Типы:
camelCasePascalCasesnake_casedash-case(name: string, parts: string[], isFolder: boolean) => stringПример:
{
... config ,
processFileAndFolderName : ( name , parts , isFolder ) =>
isFolder ? name : parts . map ( ( part ) => part . toLowerCase ( ) ) . join ( '-' )
} placeholders
Список заполнителей, которые вы можете использовать для создания собственного шаблона компонента
По умолчанию:
#NAME# для имени компонента
#STYLE# для импорта CSS-модуля
#STORY_PATH# для названия сборника рассказов
afterCreation
Объект со сценариями для обработки вас после создания
По умолчанию: undefined
Пример:
{
... config ,
afterCreation : {
prettier : {
extensions : [ '.ts' , '.tsx' ] , // optional
cmd : 'prettier --write [filepath]'
}
}
} Каждый заполнитель - это функция, которая получает некоторые данные для создания собственного заполнителя.
Во время создания нескольких компонентов все функции будут вызваны для каждого отдельного компонента.
Пример:
placeholders: {
NAME : ( { componentName } ) => componentName
} После этой настройки вы можете использовать этот заполнитель по #NAME# внутри ваших шаблонных файлов.
Ниже вы можете увидеть список всех доступных данных и функций для создания нового.
| Поле | Описание |
|---|---|
project | Название проекта в режиме Multy-Project |
componentName ,objectName | Название компонента или другого объекта в режиме с несколькими частями |
objectType | Тип объекта, который был выбран пользователем. Это component по умолчанию. |
pathToObject | Папка «Путь к объектам Пример: src/components |
destinationFolder | относительный путь к папке объекта, который создается Пример: App/Header/Logo |
objectFolder | Абсолютный путь к папке объекта (компонент) |
relativeObjectFolder | Относительный путь к папке объекта (компонент) |
filePrefix | Имя обработанного объекта (компонент) для имени файла |
folderName | Имя обработанного объекта (компонент) для папки |
files | Объект файлов, который создается |
getRelativePath(to: string) | Функция, чтобы получить относительный путь к любому другому пути Пример: ../../src/helpers |
join(...parts: string) | Функция, чтобы получить объединенные части пути. Пример: join(project, destinationFolder, componentName) => Project/Footer/Email |
stringToCase(str: string, toCase: string) | Функция для сопоставления любой строки по случаю. Пример: stringToCase('dash-case-string', 'PascalCase') => DashCaseString |
--update , -u--dest , -d--skip-search , -sdest , как есть--name , -n--files , -f--files style test component[1]style и test и выберет второй тип компонента по индексу--project , -p--slsskipFinalStep в файле конфигурации Если вам нужно сгенерировать что -то еще, а не только компоненты, вы можете настроить массив шаблонов.
Пример Bellow:
{
... config ,
templates : [
{
name : 'component' , // will be added to default folderPath folder
files : {
index : {
name : 'index.ts' ,
file : 'component.ts'
}
}
} ,
{
name : 'service' ,
folderPath : 'services/' , // will be added by the specific path
files : {
index : {
name : 'index.ts' ,
file : 'service.ts'
}
}
}
]
}