Перейти к основному содержимому

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 репа при каждом изменении.

Эта страница упоминается в:

Другие публикации не ссылаются на эту. Пока что