Одно из лучших вещей о Node.js это его массивная экосистема модуля. С блюдами вроде WebPack. Мы можем использовать их даже в браузере за пределами Node.js. Давайте посмотрим, как мы можем построить модуль с TeampScript Используется как разработчиками JavaScript, так и разработчиками Teadercript.
Прежде чем мы начнем, убедитесь, что у вас установлен Node.js – вы должны в идеале есть версию 6.11 или выше. Дополнительно убедитесь, что у вас есть NPM Или установлен аналогичный менеджер пакета.
Давайте построим модуль, который обнажает функцию, которая фильтрует все Emojis в строке и возвращает список короткокодов Emoji. Потому что кто не любит эмохис?
✨ Установка зависимостей
Сначала создайте новый каталог для вашего модуля и инициализируйте package.json
Бег в вашей командной строке:
mkdir emoji-search cd emoji-search npm init -y
Полученный package.json
Похоже:
{ "name": "emoji-search", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Теперь давайте установим некоторые зависимости. Сначала установите Typeycript Compiler в виде Devdependency
Бежать:
npm install typescript --save-dev
Затем установите emojione
модуль. Мы будем использовать это для преобразования Emojis на свои короткиекоды, такие как 🐵 до : monkey_face:
Отказ Поскольку мы будем использовать модуль в TypeScript, и модуль не подвергается типовому типы, нам также нужно установить типы для emojione.
:
npm install emojione @types/emojione --save
С помощью проектных зависимостей установлены мы можем двигаться дальше, чтобы настроить наш наш текстопечатный проект.
🔧 Настройка проекта TearmScript
Начните с создания tsconfig.json
Файл, который мы будем использовать для определения наших параметров компилятора Tearpcript. Вы можете создать этот файл вручную и поместить в него следующие строки:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": true, "outDir": "./dist", "strict": true } }
В качестве альтернативы вы можете автоматически генерировать tsconfig.json
Файл со всеми доступными параметрами, используя работу:
./node_modules/.bin/tsc --init
Если вы решили, чтобы этот подход просто обязательно настроить Декларация
и прертисс
Варианты в соответствии с JSON выше.
Установка Декларация
атрибут правда
Обеспечивает, что компилятор генерирует соответствующие файлы определений Teamscript в стороне в размещении файлов Tearpcript для файлов JavaScript. прертисс
Параметр определяет выходной каталог как Dist
папка.
Далее измените package.json
иметь сценарий сборки, который создает наш код:
{ "name": "emoji-search", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "build": "tsc", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "typescript": "^2.3.2" }, "dependencies": { "@types/emojione": "^2.2.1", "emojione": "^3.0.3" } }
Это все, что мы должны сделать, чтобы настроить настроен напечатанный проект. Давайте перейдем к записи кода модуля!
💻 Создайте код модуля
Создать lib
Папка, в которой мы можем разместить все наши файлы Tearkcript, а в нем создать файл Создать файл index.ts
Отказ Поместите в него следующую машину:
import { toShort } from 'emojione'; const EMOJI_SHORTCODES = /:[a-zA-Z1-9_]+:/g export function findEmojis(str: string): string[] { // add runtime check for use in JavaScript if (typeof str !== 'string') { return []; } return toShort(str).match(EMOJI_SHORTCODES) || []; }
Скомпилируйте код бегом:
npm run build
Вы должны увидеть новый распад
каталог, который имеет два файла, index.js
и index.d.ts
Отказ index.js
Содержит всю логику, которую мы закодировали скомпилированы на JavaScript и index.d.ts
Это файл, который описывает типы нашего модуля для использования в Teadercript.
Поздравляем с созданием вашего первого модуля, доступного как на Tymdscript, так и JavaScript! Давайте подготовим модуль для публикации.
🔖 Подготовьтесь к публикации
Теперь, когда у нас есть наш модуль, мы должны сделать три простых изменения в package.json
Будьте готовы опубликовать модуль.
- Изменить
Главная
Атрибут, чтобы указать на нашем сгенерированном файле JavaScript - Добавьте новый
типы
Параметр и укажите его в файл сгенерированных типографических типов - Добавить
Prepublish
Скрипт, чтобы убедиться, что код будет скомпилирован до того, как мы публикуем проект.
{ "name": "emoji-search", "version": "1.0.0", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { "prepublish": "npm run build", "build": "tsc", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "typescript": "^2.3.2" }, "dependencies": { "@types/emojione": "^2.2.1", "emojione": "^3.0.3" } }
Мы также должны обязательно исключить ненужные файлы из установки нашего модуля. В нашем случае lib/
Папка не нужна, потому что нам нужны только встроенные файлы в Dist/
каталог. Создайте новый файл, называемый .npmignore и поместите его следующий контент:
lib/
Вот и все! 🎉 Вы готовы сейчас опубликовать свой модуль, используя NPM публиковать
Отказ К сожалению, кто-то уже построил модуль под названием emoji-поиск
😕. Поэтому, если вы хотите опубликовать этот модуль, просто измените имя в package.json
на другое имя.
🍽 потреблять модуль
Великая вещь с нашим модулем состоит в том, что теперь это может быть легко используется в проектах JavaScript или Tearmscript. Просто установите его через NPM
или пряжа
:
npm install emoji-search --save
Если вы хотите попробовать это без публикации модуля самостоятельно, вы также можете установить Demo-Emoji-поиск
модуль. Это тот же код, опубликованный на NPM. После этого мы можем использовать модуль в JavaScript:
const emojiSearch = require('demo-emoji-search'); console.log(emojiSearch.findEmojis("Hello 🐼! What's up? ✌️"));
Или в Teadercript с полным типом поддержки:
import { findEmojis } from 'demo-emoji-search'; const foundEmojis: string[] = findEmojis(`Hello 🐵! What's up? ✌️`); console.log(foundEmojis);
🎊 Заключение
Теперь это было, очевидно, просто очень простой модуль, чтобы показать вам, насколько легко опубликовать модуль, используемый в JavaScript, так и в Teadercript.
Существует бодровая нагрузка других преимуществ, предоставленных Sypercript для автора модуля, такого как:
- Лучший опыт авторинга через лучшую автозаполнение
- Введите безопасность, чтобы уловить ошибки, особенно в краевых случаях рано
- Внесенная трансиляция передовых и экспериментальных особенностей, таких как декораторы
Как вы видели, очень легко построить модуль в Teadercript, чтобы обеспечить опыт Kickass с нашим модулем как разработчикам JavaScript, так и для Tearmscript. Если вы хотите иметь более всеобъемлющий шаблон стартера для работы, который включает в себя набор лучших практик и инструментов, проверьте Мартин Хохель напечатает-Lib-Starter на Github Отказ
✌️. Я хотел бы услышать о вашем опыте работы с Teadercript и не стесняйтесь, если у вас есть какие-либо проблемы:
Написание модуля Node.js в Teadercript был изначально опубликован на Блог Twilio 8 июня 2017 года.
Оригинал: “https://dev.to/dkundel/writing-a-nodejs-module-in-typescript”