siberiacancode / reactuse

🚀 the largest and most useful hook library
https://siberiacancode.github.io/reactuse/
MIT License
211 stars 37 forks source link

[doc]: Добавить возможность копипаста реализации хуков из доки #222

Open loonlylokly opened 1 month ago

loonlylokly commented 1 month ago

Иногда не хочется тянуть отдельный пакет с хуками ради одного или двух хуков. Многие хуки вполне самодостаточны и их можно запихнуть в 1-2 небольших файла. А значит можно сделать реализацию на подобие shadcn/ui, где есть "ручная(manual)" установка. И нужно только скопировать код и вставить. Ну и установить что-то сторонние, если в хуке такое нужно. Хотя это определённо снизит количество скачиваний npm пакета((

debabin commented 1 month ago

https://github.com/novajslabs/cli/blob/main/src/commands/add.ts cli можно добавиь на ряду с этим, вообще я считаю, что это уже золотой стандарт

debabin commented 1 month ago
zeroqs commented 1 month ago

Попробую сделать.

debabin commented 1 month ago

@zeroqs хорошо, сразу скажу пару вводных, в mock-config-server есть схожее и это очень легко сделать на самом деле

  1. Надо научиться превращать ts в читаймый js
  2. Надо создать папку bin и в ней реализовать скрипт похожий https://github.com/novajslabs/cli/blob/main/src/commands/add.ts
zeroqs commented 1 month ago

@zeroqs хорошо, сразу скажу пару вводных, в mock-config-server есть схожее и это очень легко сделать на самом деле

  1. Надо научиться превращать ts в читаймый js
  2. Надо создать папку bin и в ней реализовать скрипт похожий https://github.com/novajslabs/cli/blob/main/src/commands/add.ts

Вот либы https://github.com/elyx-code/typescript-to-js https://github.com/ritz078/transform/tree/master ( Web - https://transform.tools/typescript-to-javascript )

https://github.com/jerosoler/ts2js - вроде прикольно но юзает monaco-editor ( https://www.npmjs.com/package/monaco-editor ) не знаю на сколько ок его сюда тащить

Но как я понял без babel никак, но он оч сильно раздует бандл ( Тогда можно вынести в отдельный "пакет" как в shadcn - https://github.com/shadcn-ui/ui/tree/main/packages)

И еще момент со сборкой, если я помещу папку bin на один и тот же уровень с папкой src, то он не окажется в сборке, как фиксануть ?

Просто щас я создал ее внутри src и получается cli есть и на cjs и на esm модулях, хотя я думаю это не оч правильно. Постарался в конфиг роллапа, зашел в core пакет увидел что output опций только два как раз на cjs и esm

На счет сборки, можно вынести в отдельный "пакет" как в shadcn - https://github.com/shadcn-ui/ui/tree/main/packages Просто я сейчас захотел использовать ora - https://www.npmjs.com/package/ora, а там падает ошибка когда я использую spinner - ReferenceError: navigator is not defined, ну я вроде понял почему, но не уверен.

UPD:

Сделал в отдельной директории и думаю проблем с babel не будет уже, сделал в отдельном потому что если делать в основном то будут тянутся не нужные зависимости если юзер скачает хуки npm пакетом

Осталось проблема в скачивании хука если он имеет зависимость от импортируемого типа или чего либо еще. Я пока додумался только на проверку присутствует ли импорт который начинается с @/ и если да то скачивать его тоже

loonlylokly commented 1 month ago

И я не совсем понимаю cli это минимальный вариант, а в самой доке реализация для копипаста, это идеал или наоборот?))

А почему нельзя бабелем транспиляцию сделать? Вроде должно остаться читабельным. Что-то типо этого использовать в конфиге:

"presets": [
    "@babel/preset-typescript",
    ["@babel/preset-env", { "targets": { "node": "current" } }]
  ]

А синтаксис подсвечивать легкой https://prismjs.com/ (в doka используется она, других не знаю))) В shadcn кстати вообще только ts