Open loonlylokly opened 3 months ago
https://github.com/novajslabs/cli/blob/main/src/commands/add.ts cli можно добавиь на ряду с этим, вообще я считаю, что это уже золотой стандарт
Попробую сделать.
@zeroqs хорошо, сразу скажу пару вводных, в mock-config-server есть схожее и это очень легко сделать на самом деле
@zeroqs хорошо, сразу скажу пару вводных, в mock-config-server есть схожее и это очень легко сделать на самом деле
- Надо научиться превращать ts в читаймый js
- Надо создать папку 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
, ну я вроде понял почему, но не уверен.
Сделал в отдельной директории и думаю проблем с babel не будет уже, сделал в отдельном потому что если делать в основном то будут тянутся не нужные зависимости если юзер скачает хуки npm пакетом
Осталось проблема в скачивании хука если он имеет зависимость от импортируемого типа или чего либо еще.
Я пока додумался только на проверку присутствует ли импорт который начинается с @/
и если да то скачивать его тоже
И я не совсем понимаю cli это минимальный вариант, а в самой доке реализация для копипаста, это идеал или наоборот?))
А почему нельзя бабелем транспиляцию сделать? Вроде должно остаться читабельным. Что-то типо этого использовать в конфиге:
"presets": [
"@babel/preset-typescript",
["@babel/preset-env", { "targets": { "node": "current" } }]
]
А синтаксис подсвечивать легкой https://prismjs.com/ (в doka используется она, других не знаю))) В shadcn кстати вообще только ts
Иногда не хочется тянуть отдельный пакет с хуками ради одного или двух хуков. Многие хуки вполне самодостаточны и их можно запихнуть в 1-2 небольших файла. А значит можно сделать реализацию на подобие shadcn/ui, где есть "ручная(manual)" установка. И нужно только скопировать код и вставить. Ну и установить что-то сторонние, если в хуке такое нужно. Хотя это определённо снизит количество скачиваний npm пакета((