- pnpm para manejar las dependencias
- TypeScript
- ESlint para errores de sintaxis
- Prettier para formatear el código
mkdir node_project
cd node_projectpnpm initCopiar lo siguiente y pegarlo en package.json.
{
"name": "getting-started-node-typescript",
"repository": {
"type": "git",
"url": "https://github.com/rapax00/getting-started-node-typescript"
},
"keywords": [],
"author": "Rapax",
"license": "MIT",
"homepage": "https://github.com/rapax00/getting-started-node-typescript#readme",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "tsc && node dist/index.js",
"lint": "eslint .",
"format": "exec prettier . --write",
"format-spec": "prettier --write",
"check": "prettier . --check",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"@eslint/js": "^9.9.1",
"eslint": "^9.9.1",
"globals": "^15.9.0",
"prettier": "3.3.3",
"typescript": "^5.5.4",
"typescript-eslint": "^8.3.0"
}
}Crear un archivo .nvmrc.
touch .nvmrcCopiar lo siguiente y pegarlo en .nvmrc. ( o la versión que prefieras )
v20.13touch .gitignoreCopiar lo siguiente y pegarlo en .gitignore.
node_modules
disttouch tsconfig.jsonCopiar lo siguiente y pegarlo en tsconfig.json.
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"strict": true,
"noImplicitAny": true,
"skipLibCheck": true
},
"lib": ["es2015"],
"include": ["**/*"],
"exclude": ["node_modules", "dist"]
}pnpm iCrear un archivo de configuración
pnpm eslint --initSeleccionar las siguientes opciones:
- How would you like to use ESLint?
- To check syntax and find problems
- What type of modules does your project use?
- JavaScript modules (import/export)
- Which framework does your project use?
- None of these
- Does your project use TypeScript?
- Yes
- Where does your code run?
- Node
- Would you like to install them now?
- Yes
- Which package manager do you want to use?
- pnpm
Copiar lo siguiente y pegarlo en eslint.config.mjs.
import globals from 'globals';
import pluginJs from '@eslint/js';
import tseslint from 'typescript-eslint';
export default [
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },
{ ignores: ['node_modules', 'dist'] },
{ languageOptions: { globals: globals.node } },
pluginJs.configs.recommended,
...tseslint.configs.recommended,
];Crear un archivo de configuración
touch .prettierrcCopiar lo siguiente y pegarlo en .prettierrc.
{
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"arrowParens": "always"
}Crear un archivo de ignore para prettier
touch .prettierignoreCopiar lo siguiente y pegarlo en .prettierignore.
node_modules
distPrettier también seguirá las reglas especificadas en .gitignore si existe en el mismo directorio desde el que se ejecuta.
pnpm lintFormatear el código
pnpm formatFormatear una carpeta o archivo específico
pnpm format-spec <ruta>Formatear todos los archivos de prueba
pnpm format-spec <ruta/**/*.test.js>Chequear si el código está formateado
pnpm checkEste es un ejemplo simple para probar el proyecto
- Crear directorio
mkdir srcMoverse al directorio
cd srcCrear un archivo index.ts
touch index.tsCopiá lo siguiente y pegalo dentro
console.log('Congratulations, you are ready to start coding! 🎉');- Ejecutá el proyecto y disfrutalo
Mirá tu consola
pnpm startCompila el proyecto y ejecuta el archivo
dist/index.js
Hecho con 👐 por Rapax
Tips son bienvenido a través de Lightning Zap a ⚡rapax@lawallet.ar.