JS & TS
Заметки нуба
Могут быть полезны для тех, кто тоже только вкатывается
- TS это лишь синтаксис, JS это язык. TS файлы не исполняются, их нужно компилировать в JS.
- В каждом проекте есть
tsconfig.jsonфайл, который содержит настройки для компилятора. Генератор 1, Генератор 2. Опций дофига, но основные всего парочка. - Компилятор TS называется
tsc. tsc --watchзапускает компилятор в режиме "наблюдения" (он будет следить за изменениями в файлах и пересобирать проект при их изменении).tsc --initсоздаетtsconfig.jsonфайл в текущей директории.- В
.gitignoreкак правило игнорируютсяnode_modules(зависимости проекта),dist(результат компиляции TS в JS). package-lock.jsonне нужно добавлять в .gitignore!- В
package.jsonесть популярные, но необязательные поля:description,tags,repository,bugs,homepage,license,author,contributors, ... – они просто парсятся в npmjs.com для отображения на странице. yarnэто улучшенная версия npm (или обертка над npm, я не углублялся). Как минимум документация ГОРАЗДО лучше (в npm черт ногу сломит. Вот попробуйте найти в их доках как опубликовать пакет) и есть удобные подсказки (например послеyarn unlinkподскажет что делать дальше. Короче UX лучше). Сейчас появился еще какой-то corepack, но для меня это пока дебри.- Для локальной разработки можно использовать
yarn link, а еще естьyarn add file:../path/to/package. - Отличный пошаговый концентрат, чтобы понять как устроена разработка в js. Здесь все в одном месте, что может спросить человек, который никогда не делал npm пакеты. От создания Git репа до публикации в npm и куча других полезностей. Автор поста по совместительству автор многих TS концептов.
- Про
*Dependencies:- Просто
dependencies– то, от чего напрямую зависит твой проект (то, что импортируешь). Дефолтное поле дляyarn add peerDependencies– вроде как зависимости, которые должны быть в проекте, который использует твой пакет. Сами по себе приyarn installне устанавливаются.devDependencies– если правильно понял, то устанавливаются всегда, если неyarn install --productionилиNODE_ENV=production.optionalDependencies– даже не узнавал
- Просто
tscне переносит css (и другие) файлы в outDir? У меня естьsrc/components/Name/index.tsxи рядом с нимstyles.module.css. В dist уже нет никакого.css. Нужно обязательно уродовать код..?