Значи имате страхотна идея, която ще революционизира света? Или просто искате да напишете клиентска библиотека за достъп до TimeZoneDB API?

Докато сядате да пренаписвате историята с този модул-до-край-всички модули, осъзнавате, че не знаете откъде да започнете. Има толкова много входове и изходи и какво имате, които трябва да имате предвид, преди да напишете първия си ред код.

Как структурирате проекта си? Кои VSCode разширения трябва да инсталирате? С каква конфигурация на tslint трябва да започна и какво изобщо означават тези правила? Как да настроите tsconfig.json за правилно компилиране на вашия проект?

След това започвате да мислите за тестване, покритие на кода, непрекъсната интеграция и непрекъсната доставка, докато не бъдете доведени до лудост, опитвайки се да разберете кой е изобретателят на YAML, за да можете учтиво да попитате дали това не е просто някаква вендета срещу Дъглас Крокфорд.

Бележка към доставчиците на услуги — Дъглас Крокфорд е изобретателят на JSON, който е форматът на конфигурационния файл, който трябва да използвате. *патици*

Не че не можете да прочетете пълната документация за всеки инструмент, от който се нуждаете, или да напишете на ръка свой собствен .gitignore, просто светът не може да чака три седмици, за да се промъкнете през утайката, докато имате надеждна настройка. Хората се нуждаят от информация за часовата зона точно сега.

За твой късмет някакъв глупак вече е направил пътуването и е донесъл обратно подправката. С един прост git clone можете да си спестите седмиците на проучване, овладяване на дълбините на документацията на tslint, настройка на надеждно тестване с покритие на кода, писане на конфигурация след конфигурация, изграждане на скриптове, настройка на CI/CD, писане на конфигурации и задачи за стартиране и всички неуспехи и разочарования, през които неизбежно преминаваме.

Обещавам, измих си ръцете, преди да го пусна.

Typescript NPM Module Starter е настройка с включени батерии за незабавно започване на работа с вашия npm модул без всичкото гореспоменато главоболие. Пълната документация за работа с репото е в README на връзката, но следва кратък преглед на това, което е включено.

Тестване

Използвайки mocha (по-специално mocha-typescript) и по избор sinon за тестване, тестовете се пишат в лесен за четене класов стил с декоратори. Тестовете се съставят в движение и има предварително написан скрипт за стартиране на наблюдател. Покритието с istanbul/nyc е предварително конфигурирано и значката за покритие се генерира със скриптовете за освобождаване. Можете просто да напишете вашите тестове и да ги изпълните.

Нанасяне на мъх

Качеството на кода, последователността и четливостта са критични, както и предотвратяването на често срещани грешки. Включена е много упорита конфигурация на tslint, базирана на известния tslint-config-airbnb, но с много часове допълнително време, прекарано в настройване на точни правила за най-перфектния Машинописен код, който може да бъде написан, по мое много скромно мнение. Използвайте включената конфигурация или пуснете своя собствена. Просто работи.

Конфигурация на VSCode

За да започнете правилно, има набор от препоръки за разширения, които работят с предоставените конфигурации. Има конфигурация за стартиране на тестове, така че можете да отстранявате грешки в тестове, когато нещата не вървят по план. Има задачи за стартиране на lint, тестване, наблюдение на тестове и изграждане на скриптове. И накрая има файл с настройки, предназначен да направи изживяването ви страхотно веднага след като сте го подготвили.

Непрекъсната интеграция

Инструкциите във връзката към хранилището ви помагат да започнете с CircleCI, безплатна услуга за проекти с отворен код, за да изпълнявате вашия lint, тествате и създавате скриптове в контейнер в облаците. Или върху него. Което и да е.

Направете го за забавление или следвайте инструкциите на връзката, за да попречите на всеки код, който не преминава линт, тест или компилация, да влезе във вашия главен клон. Предоставена е пълна конфигурация на CircleCI YAML (yuk) за непрекъснато тестване на интеграцията. Просто следвайте инструкциите и работи.

Предоставени са пълни инструкции за сценарии за ръчно внедряване, където искате да натиснете бутон, за да публикувате в npm. Това също е изискване, ако използвате двуфакторно удостоверяване за публикуване в npm, тъй като няма начин CircleCI да удостовери с 2FA.

Непрекъснато внедряване

Ако искате пълно практически изживяване и сте добре да не изисквате 2FA за публикуване на npm, има включена конфигурация на CircleCI YAML за непрекъснато внедряване.

Когато стартирате включения скрипт за освобождаване и следвате много простата процедура, се създава git таг, когато създавате нова версия за издание на вашия модул. Етикетът ще бъде например v1.0.0. CircleCI ще разпознае етикета с номера на версията и ще изпълни вашия нормален работен процес за компилиране, с вашите линтинг, тестване и изграждане. Ако всички те се изпълняват успешно, той автоматично ще публикува вашия модул в npm.

Представете си, пълна настройка от dev към CD с един git clone!

Разни

Има, разбира се, всякакви други конфигурации, настройка на папки и други решения, които трябва да бъдат взети, за да работи проект като този. Всички те са настроени по надежден начин, за да работят просто. Можете да ги вземете такива, каквито са, или да ги модифицирате по ваш вкус, но мисля, че това е най-лесният начин просто да ударите в основата.

  • gitignore е настроен да проверява вашия вграден (компилиран) код. Скриптът за освобождаване гарантира, че това ще се случи, преди да освободите.
  • npmignore е настроен да публикува само вашия изграден (компилиран) код и дефиниции на типове
  • Прочетете скрипта release.sh. Опитва се да се увери, че не сте забравили нищо (некоммитиран код, остарял заключващ файл, забравен ангажимент за нова компилация)

TimeZoneDB

Не се шегувах. Наистина създадох клиентската библиотека, за да управлявам всички тях. Това безсрамен щепсел ли е? да Вижте timezonedb. Тази точна настройка е използвана при създаването на този модул.

Вашите часови зони принадлежат на нас.

Заключение

Надявам се да намерите това за полезно. Щастлив съм, че няма да ми се наложи да минавам през това отново до есента, когато пристигне следващото най-велико нещо. Някой прошепва тихо „Кубернетес. Istio.” Пак се започва.