Modern JavaScript development often benefits from using Node.js with TypeScript, leveraging its type safety and enhanced tooling for scalability. This is further amplified by integrating a robust bundler, testing framework, and automatic reloading. This article guides you through setting up a Node.js project with TypeScript, Rollup, Jest, and Nodemon for a streamlined development experience.
Configuring a Node.js project with TypeScript can be complex, involving multiple tools and configurations. This often leads to a cumbersome workflow. This article presents a simplified approach using the latest tools, addressing common setup challenges:
.js
extensions in import statements.This configuration streamlines the development process, making it more efficient and maintainable.
Before you begin, ensure you have:
Let's create a basic Node.js project with TypeScript:
Project Directory: Create a new project directory and navigate to it:
<code class="language-bash">mkdir my-ts-app cd my-ts-app</code>
Package Initialization: Initialize a package.json
file:
<code class="language-bash">npm init -y</code>
Dependency Installation: Install the required dependencies:
<code class="language-bash">npm install --save-dev typescript ts-node @types/node tslib ts-jest rollup rollup-plugin-esbuild nodemon jest @rollup/plugin-node-resolve @rollup/plugin-commonjs</code>
TypeScript Configuration (tsconfig.json
): Configure TypeScript for the Node.js environment:
<code class="language-json">{ "compilerOptions": { "target": "ESNext", "module": "ESNext", "outDir": "./dist", "strict": true, "esModuleInterop": true, "moduleResolution": "node", "skipLibCheck": true, "resolveJsonModule": true, "declaration": true, "sourceMap": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "tests"] }</code>
Rollup Configuration (rollup.config.js
): Configure Rollup for production builds:
<code class="language-javascript">import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import esbuild from 'rollup-plugin-esbuild'; export default { input: './src/index.ts', output: { dir: 'dist', format: 'esm', sourcemap: true, banner: '#!/usr/bin/env node' }, plugins: [ resolve(), commonjs(), esbuild({ target: 'esnext', sourceMap: true, minify: true }) ] };</code>
Jest Configuration (jest.config.js
): Configure Jest for testing:
<code class="language-javascript">/** @type {import('ts-jest').JestConfigWithTsJest} **/ export default { testEnvironment: "node", transform: { "^.+.tsx?$": ["ts-jest",{}] } };</code>
Nodemon Configuration (nodemon.json
): Configure Nodemon for automatic reloading:
<code class="language-json">{ "watch": ["src"], "ext": "ts,json", "ignore": ["src/**/*.spec.ts"], "exec": "npm start" }</code>
Create Source Files: Create src/index.ts
and src/functions/addition.ts
(example files provided in original prompt).
Create Test Files: Create test files (e.g., tests/functions/addition.spec.ts
).
Project Structure: Your project should have a structure similar to the one outlined in the original prompt.
npm run build
npm start
npm run dev
npm test
This setup provides a streamlined and efficient environment for developing Node.js applications with TypeScript. Remember to adjust the configurations to fit your specific project needs. This is a foundation for building robust and scalable applications.
The above is the detailed content of A Complete Node.js TypeScript Setup with Rollup, Jest, and Nodemon. For more information, please follow other related articles on the PHP Chinese website!