Créer la dernière bibliothèque technologique

Salut, Habr. Cet article explique comment écrire Hello world avec les dernières technologies.


À la fin, nous obtenons une bibliothèque du monde bonjour qui:


  • Utilise dactylographié
  • Prend soin du codestyle
  • Génère un dock
  • Effectue des tests

Début commencé


Dans le nouveau dossier, lancez git et npm


git init npm init 

Lors de la configuration de npm


  package name: (bestlibever) version: (1.0.0) 0.1.0 description: Best lib forever entry point: (index.js) test command: jest git repository: keywords: author: >MAX_ (maximmasterr) license: (ISC) MIT 

Structure du projet


Le projet aura les répertoires suivants:


  • src - Voici les fichiers de la bibliothèque elle-même (tapuscrit)
  • lib - Ici tsc mettra les fichiers compilés de src
  • test - Voici les tests
  • exemples - Exemples d'utilisation

Vous devez également ajouter à .gitignore :


 lib/ node_modules/ 

Typographie


Maintenant, installez et configurez tapuscript:


 npm i typescript -D 

Et créez un fichier appelé tsconifg.json


  { "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": true, "outDir": "./lib", "strict": true, "sourceMap": true }, "include": ["src"], "exclude": ["node_modules", "**/__tests__/*"] } 

src/index.ts maintenant le fichier principal se trouvant src/index.ts


 export function helloWorld(){ return 'Hello world!' } 

Ajoutez également des scripts à package.json :


  "build": "tsc", "dev": "tsc --watch" 

Nous pouvons maintenant exécuter une génération unique en utilisant:


 npm run build 

Et réutilisable:


 npm run dev 

Codestyle


Pour tester le style de code, nous allons utiliser tslint et plus joli, ainsi que l'exécuter avant de valider.
Installez tslint, plus joli, husky:


 npm i tslint tslint-config-prettier prettier husky -D 

Configurer plus joli en créant un fichier .prettierrc avec le contenu


 { "printWidth": 120, "trailingComma": "none", "singleQuote": true } 

Ajouter un script pour exécuter plus joli


  "prettier": "npx prettier --write src/* test/* example/*" 

Configurer tslint en créant un fichier tslint.json avec le contenu


 { "extends": ["tslint:recommended", "tslint-config-prettier"], "rules": { "curly": false, "ordered-imports": false, "interface-name": [true, "never-prefix"] } } 

Ajoutez le script tslint et le codestyle:


  "tslint": "tslint -p tslint -p tsconfig.json", "codestyle": "npm run prettier && npm run tslint" 

Faisons maintenant exécuter le codestyle avant de valider et ajoutons à package.json :


 "husky": { "hooks": { "pre-commit": "npm run codestyle" } } 

La documentation


Pour générer des pages Web à partir de md, nous utilisons docsify et pour générer de la documentation à partir d'api tsdoc


Installez-les


 npm i docsify-cli typedoc -D 

Dans le dossier docs, créez README.md :


 # Best lib ever Best lib ever `helloWorld` return `'hello world'` ## Example ``js const a = require('') console.log(a.helloWorld()) // prints 'Hello world!' `` 

Ajoutez également moreExample.md
La source se trouve ici


Prochaine faire


 npx docsify init ./docs 

Configurer la barre latérale dans docsify en créant le fichier sidebar.md


 # Best lib ever * [Best lib ever](/) * [More examples](/moreExamples) 

Maintenant, pour voir toute cette beauté, ajoutez un script


 "docsify": "docsify serve ./docs" 

Et courir


 npm run docsify 

Prenons maintenant une documentation de méthode statique
Tout d'abord, ajoutez une description de la fonction dans le code:


 /** * Returns `Hello world!` */ 

Dans .gitinore ajoutez docs/api


Ajouter un script pour typedoc


 "typedoc": "typedoc --out ./docs/api ./src --mode file --readme docs/README.md" 

Enfin, ajoutez le script de dock final


 "docs": "npm run typedoc && npm run docsify" 

Tout est maintenant suffisant pour voir les quais


 npm run docs 

Les tests


Installer la plaisanterie


 npm install --save-dev @types/jest @types/node jest ts-jest typescript 

Créons la configuration jest.config.js


 module.exports = { roots: ['/src'], transform: { '^.+\\.tsx?$': 'ts-jest', }, testRegex: '(/__test__/.*|(\\.|/)(test|spec))\\.tsx?$', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], } 

Créez un test ( test/index.ts ):


 import { helloWorld } from "../src"; test('Should return helloWorld', () => { expect(helloWorld()).toBe('Hello world!') }) 

Et maintenant, vous pouvez exécuter des tests sur


 npm test 

Résumer


Maintenant on peut


 npm run build #   npm run dev #    npm run codestyle #    npm run docs #   npm test #   

Le dépôt github final

Source: https://habr.com/ru/post/fr467187/


All Articles