Добро пожаловать в сообщество Tencent Cloud +, чтобы получить больше обширной технической практики Tencent по галантерее ~
Эта статья была опубликована Сяомин плюс
Много раз мы можем захотеть использовать язык typescript для создания некоторых модулей и отправки их в npm для использования другими,
Итак, в 2018 году какие шаги мне нужно сделать, если я хочу инициализировать такой модуль?:
ответ:Для создания элегантного, удобного для разработчиков модуля необходимо выполнить как минимум следующие 15 шагов.
- Инициализировать папку, инициализировать репозиторий git, инициализировать npm, инициализировать tsc
- Изменить конфигурацию tsconfig.js
- Добавьте npm-скрипты
- Добавьте правила кода проверки tslint и editorconfig, более красивый унифицированный стиль кода.
- Настройка хуков проверки для коммитов git
- начать писать код
- развитие режима просмотра
- Игнорировать папки, сгенерированные компиляцией ts
- Добавьте модульные тесты
- Напишите пример модульного теста
- Настройте несколько полезных скриптов npm
- Улучшить описание package.json
- Отправить код в репозиторий git
- Опубликуйте пакет вnpm
В этой статье я приведу подробные инструкции для каждого шага.
В реальной разработке, если каждый пакет проходит через эти шаги, кажется, что шагов слишком много. Поэтому, если вам действительно нужно создать проект, вы можете клонировать тот, который я предоставил.шаблонный проектЧтобы начать разработку нового модуля ts, основные шаги следующие:
git clone https://github.com/xiaomingplus/npm-typescript-boilerplate.git your-project-name
cd your-project-name
# 安装依赖
npm i
# 开始开发
npm start
# 修改 package.json 里面的项目名和简介
# 修改 README.md 文件内容
# 修改 远程仓库的地址
git remote set-url origin your-git-url
Ниже приведены общие шаги. В целях обучения рекомендуется выполнить следующие шаги:
1. Инициализировать папку, инициализировать npm, инициализировать tsc
mkdir project-name
cd project-name
# 初始化git项目
git init
# 添加gitignore文件
touch .gitignore
# 复制这个地址的ignore内容到.gitignore <https://github.com/github/gitignore/blob/master/Node.gitignore>
# 添加readme文件
echo "# My Awesome Typescript Project" >> README.md
# 安装typescript
npm install --save-dev typescript
# 初始化npm包
npm init --y
# 初始化tsconfig
tsc --init
2. Измените конфигурацию tsconfig.js.
Измените следующую конфигурацию по умолчанию:
{
"compilerOptions": {
"declaration": true,
"outDir": "./lib",
},
"include": ["src"],
"exclude": ["node_modules", "**/__tests__/*"]
}
Окончательная конфигурация tsconfig выглядит следующим образом:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"strict": true,
"outDir": "./lib",
"esModuleInterop": true
},
"include": ["src"],
"exclude": ["node_modules", "**/__tests__/*"]
}
3. Добавьте скрипт npm
Отредактируйте поле scripts в package.json:
{
"scripts": {
"start": "tsc -w",
"build": "tsc"
}
}
4. Добавьте правила кода проверки tslint и editorconfig, более красивый унифицированный стиль кода.
npm install --save-dev prettier tslint tslint-config-prettier
новыйtslint.json
документ
{
"extends": ["tslint:recommended", "tslint-config-prettier"],
"rules": {
"no-console": false,
"object-literal-sort-keys": false,
"member-access": false,
"ordered-imports": false
},
"linterOptions": {
"exclude": ["**/*.json", "node_modules"]
}
}
новый.prettierrcдокумент
{
"trailingComma": "all",
"tabWidth": 4,
"semi": false,
"singleQuote": true,
"endOfLine": "lf",
"printWidth": 120,
"overrides": [
{
"files": ["*.md", "*.json", "*.yml", "*.yaml"],
"options": {
"tabWidth": 2
}
}
]
}
новый.editorconfig
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 4
[{*.json,*.md,*.yml,*.*rc}]
indent_style = space
indent_size = 2
Добавьте удобный скрипт скриптов:
{
"scripts": {
"format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
"lint": "tslint -p tsconfig.json"
}
}
5. Установите контрольный хук для коммитов git
Установите спецификацию контрольной суммы хука фиксации git
npm install --save-dev husky @commitlint/config-conventional @commitlint/cli commitizen cz-conventional-changelog
новыйcommitlint.config.jsдокумент
touch commitlint.config.js
записывать:
module.exports = {
extends: ["@commitlint/config-conventional"]
};
новый.huskyrcдокумент
touch .huskyrc
записывать:
{
"hooks": {
"pre-commit": "npm run format && npm run lint && npm test",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
Новый файл конфигурации:
touch .czrc
Написать конфигурацию:
{ "path": "cz-conventional-changelog" }
package.json добавляет конфигурацию скриптов:
{
"scripts": {
"commit": "git-cz"
}
}
6. Начните писать код
cd project-name
mkdir src
cd src
touch index.ts
Запишите первую строку кода ts:
export const Greeter = (name: string) => `Hello ${name}`;
7. Развивайтесь в режиме часов
npm start
8. Игнорировать папку, созданную компиляцией ts
Пучок/lib
добавить папку в.gitignore
/lib
9. Добавьте модульные тесты
npm install --save-dev jest ts-jest @types/jest
Создайтеjestconfig.jsonдокумент:
{
"transform": {
"^.+\\.(t|j)sx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"]
}
Исправлятьpackage.jsonтест по скриптам в:
{
"scripts": {
"test": "jest --config jestconfig.json"
}
}
10. Напишите пример модульного теста
существуетsrcсоздать новую папку__tests__
папку для хранения файлов тестового примера, создайте новуюGreeter.test.tsфайл, напишите:
import { Greeter } from "../index";
test("My Greeter", () => {
expect(Greeter("Carl")).toBe("Hello Carl");
});
Запустите тестовый пример:
npm test
Результат должен быть передан.
11. Настройте несколько полезных скриптов npm
подготовить: выполнить перед выпуском и перед установкой пользователем
prepublishOnly: запускать перед публикацией
preversion: запустить перед созданием новой версии
версия: запустить после создания новой версии
postversion: запустить после создания новой версии
{
"scripts": {
"prepare": "npm run build",
"prepublishOnly": "npm test && npm run lint",
"preversion": "npm run lint",
"version": "npm run format && git add -A src",
"postversion": "git push && git push --tags"
}
}
12. идеальное описание для package.json
nameПолное имя пакета, описание, файл записи пакетаmainполе, файл машинописного типаtypesопределение поля
{
"name": "project-name"
"description": "A nice greeter",
"main": "lib/index.js",
"types": "lib/index.d.ts"
}
13. Улучшите информацию о документе
новыйdocПапка, в которой вы можете написать подробную документацию по модулю:
mkdir doc
Полныйreadme.mdинформация, формат может относиться кздесь
14. Закоммитить код в репозиторий git
Отправьте код в репозиторий git после выпуска
git add .
git commit -m "feat: init"
# 关联到远程仓库不属于本教程的内容,就不写push了
15. Опубликуйте пакет вnpm
Если вы не зарегистрированы как пользователь npm, вам необходимо сначала зарегистрироваться.
npm adduser
После регистрации вы можете публиковать в npm:
# 自动修改package.json文件版本号+1
npm version patch
npm publish
После публикации вы можете перейти кwww.npmjs.com/найди свою сумку на
Ссылаться на
Step by step: Building and publishing an NPM Typescript package.
Эта статья была разрешена автором для публикации в сообществе Tencent Cloud + Для получения дополнительных оригинальных текстов, пожалуйстанажмите
Найдите и подпишитесь на общедоступную учетную запись «Сообщество Yunjia», получите технические галантереи как можно скорее и ответьте на 1024 после подписки, чтобы отправить вам подарочный пакет технических курсов!