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
. Нужно обязательно уродовать код..?