Об авторе Техническая команда zqlu Ant Financial Data Experience
Зачем использовать TypeScript для написания библиотек функций
Как надмножество языка JavaScript с определением типов, TypeScript, используемый для написания библиотек функций, не только приносит такие преимущества, как повышение эффективности разработки и статическая проверка, для самих разработчиков, но также дает следующие преимущества пользователям библиотеки:
- Для пользователей, которые используют JavaScript напрямую, в процессе компиляции TypeScript может быть сгенерирован непосредственно используемый код JavaScript, такой как код JavaScript версии ES5, который не влияет на использование пользователем.
- Для разработчиков, использующих TypeScript, файлы определений, сгенерированные компиляцией TypeScript, могут значительно улучшить взаимодействие с пользователем.
Компиляция управления функциональной библиотекой
После того, как кодовая база будет выпущена, пользователи могут использовать библиотеку различными способами, например, загружать и использовать ее непосредственно в браузере, ссылаться на кодовую базу через модуль CommonJS NodeJs или напрямую через модуль ES6.
После использования TypeScript для написания кодовой базы разработчики могут напрямую использовать модульный механизм TypeScript для модуляции кодовой базы, не заботясь о том, как пьют пользователи кодовой базы; вместо этого он генерируется в процессе компиляции TypeScript.
Ниже описан процесс компиляции в описанных выше различных сценариях использования.
Генерация модульного кода CommonJS
В настоящее время большинство библиотек для разработки интерфейсов публикуются на npm.Как менеджер пакетов NodeJs, npm очень необходим для предоставления модульного кода CommonJs.
Настройте генерацию кода модуля CommonJS через tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist/cmjs",
"rootDir": "./src",
"declaration": true,
"sourceMap": true,
"lib": ["dom", "es6"]
}
}
С приведенной выше конфигурацией"module": "commonjs"
Чтобы объявить, что скомпилированный и сгенерированный модуль объектного кодаcommonjs
, каталог сгенерированного объектного кода:"outDir": "dist/cmjs"
.
в то же времяpackage.json
в, черезmain
поле для объявления файла ввода CommonJS:
{
"name": "myLib",
"version": "0.1.0",
"main": "dist/cmjs/index.js",
}
Генерация кода модуля ES6
Благодаря популярности стандарта ES6 и встроенной поддержке модулей ES6 различными инструментами упаковки, такими как пакет webpack.Конфигурация resolve.mainFields, предоставление кода модуля ES6 позволяет пользователям пользоваться некоторыми функциями модулей ES6.
Как и CommonJS, код модуля ES6 также можно сгенерировать, настроив tsconfig.json, но commonjs обычно используется в качестве конфигурации по умолчанию в tsconfig.json, поэтому вы можете добавить скрипт в package.json для передачи параметров командной строки компилятора TypeScript Компилировать и генерировать Код модуля ES6:
{
"name": "myLib",
"script": {
"build:cmjs": "tsc -P tsconfig.json",
"build:es6": "tsc -P tsconfig.json --module ES6 --outDir dist/es6",
"build": "npm run build:cmjs; npm run build:es6"
}
}
вbuild:cmsj
Скомпилируйте и сгенерируйте объектный код модуля CommonJS,build:es6
Скомпилируйте, чтобы сгенерировать объектный код модуля ES6. Для кода модуля ES6 введитеpackage.json
В поле модуля объявить файл ввода кода модуля ES6, чтобы загрузчик модуля мог распознать использование модуля ES6:
{
"name": "myLib",
"version": "0.1.0",
"main": "dist/cmjs/index.js",
"module": "dist/es6/index.js",
}
Генерация кода, которую можно использовать прямо в браузере
Создавайте код, который может использоваться непосредственно браузерами, что удобно для пользователей, и на которое можно напрямую ссылаться в html-файлах без использования диспетчера пакетов. Например, в React вы можете напрямую импортировать отдельный файл dist/react.js в файл HTML. В связи с этим необходимо объединять большие пакеты в соответствии с зависимостями модульного распределенного кода, поэтому вполне возможно использовать инструменты упаковки, такие как webpack, которые здесь подробно не будут представлены.
Кроме того, вы также можете использоватьBrowserifyИнструмент для упаковки модульного кода CommonJS, созданного в результате вышеуказанной компиляции, в код, который может быть непосредственно использован браузером. Опять же, это делается простым добавлением скрипта в package.json:
{
"name": "myLib",
"script": {
"build:cmjs": "tsc -P tsconfig.json",
"build:es6": "tsc -P tsconfig.json --module ES6 --outDir dist/es6",
"build:web": "browserify dist/cmjs/index.js --standalone myLib -o dist/web/bundle.js",
"build": "npm run build:cmjs; npm run build:es6"
}
}
Версии и выпуски
Семантическое управление версиями
Семантическая версия использует формат версии, такой как: основной номер версии, дополнительный номер версии, номер редакции.Документ определения. Соблюдение правил семантического номера версии помогает пользователям понять процесс обновления и модификации базы кода, а совместное следование семантическому номеру версии может принести пользу как разработчикам, так и пользователям.
Кроме того, в документации упоминаются некоторые распространенные проблемы, такие как:
- На стадии разработки библиотеки функций, контролируется ли номер версии? Рекомендуется начинать с версии 0.1.0.
- Как судить, когда выпустить 1.0.0? Программное обеспечение используется в формальной среде, есть фиксированные API, на которые полагаются пользователи, когда возникает проблема обратной совместимости.
- Для общедоступных API даже самые маленькие, но несовместимые с предыдущими изменениями изменения требуют нового основного номера версии, и разве это не скоро, как версия 42.0.0? Это вопрос ответственности за разработку и дальновидности, почему так много несовместимых изменений :)
релизная версия
После того, как библиотека функций написана на TypeScript, ее рекомендуется использовать при необходимости обновления версии.npm version
команда для обновления номера версии, например:
-
Обновить номер версии:
npm version patch
-
Обновите этот номер версии:
npm version minor
-
Обновите основной номер версии:
npm version major
Выполнение вышеуказанной команды добавит соответствующий номер версии и сохранит его в поле версии package.json. При использовании git для управления версиями исходного кода вы также можете добавить параметр -m, чтобы автоматически предоставить запись фиксации обновления версии и запись тега, например запускnpm version patch -m "update version %s"
В дополнение к обновлению поля версии в package.json автоматически создается запись фиксации, а сообщение фиксации в%m
Будет заменен новым сгенерированным номером версии в дополнение к сгенерированной пользователем записи тега.
Студенты, интересующиеся машинописным текстом, могут подписаться на эту колонку или отправить свое резюме на адрес lingdao.lzq####alibaba-inc.com.replace('####', '@'). Приветствуются люди с высокими идеалами присоединиться~
Оригинальный адрес:GitHub.com/proto team/no…