Рубрики
Без рубрики

Написание модуля Node.js в Teadercript

Узнайте, как написать модуль, используя TeampScript, который можно потреблять как JavaScript, так и в Teamscript в Node.js или браузере. Помечено с помощью Tymdscript, JavaScript, модулей, NPM.

Одно из лучших вещей о 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 Будьте готовы опубликовать модуль.

  1. Изменить Главная Атрибут, чтобы указать на нашем сгенерированном файле JavaScript
  2. Добавьте новый типы Параметр и укажите его в файл сгенерированных типографических типов
  3. Добавить 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”