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
– даже не узнавал
- Просто
- В docusaurus есть "клиент" и "сервер". Я пытался в модуле
plugin-backlinks
сделать импорт из главного index.js компонента, который требуется только на клиенте и потратил 2 суток, чтобы понять, ЧТО ТАК НЕЛЬЗЯ и это не работает. tsc
не переносит css (и другие) файлы в outDir? У меня естьsrc/components/Name/index.tsx
и рядом с нимstyles.module.css
. В dist уже нет никакого.css
. Нужно обязательно уродовать код..?- В конце концов минимально без оверлоада для разработки плагина нужно 2 терминала. В одном
docusaurus dev
, в другомtsc build --watch
. При изменении ts файлов сразу будет билдится js версия и применяться в браузере докусарусом. Ну иyarn link
для использования локального пакета, а не пушить и пуллить с npmjs репа при каждом изменении.