javascript / node.js / npm install 时 --save 和 --save-dev 的区别

本文解析了Node.js项目中dependencies和devDependencies的区别,以及npm install命令的--save和--save-dev选项的作用。dependencies用于生产环境,devDependencies用于开发和测试环境。--save将包添加到dependencies,--save-dev则添加到devDependencies。

一、dependencies 和 devDependencies

在使用 node 开发时, 我们在工程中用到的包必须是 package.json 中列出。而 dependencies 和 devDependencies 是package.json 中的两个属性,我们要用的包在这两个属性中列出即可。

二者的主要区别如下:

  • dependencies 列出的包用于生产环境;

  • devDependencies 用于开发环境和测试环境。

二、--save 和 --save-dev

在安装包时,我们可以根据环境决定包的安装效果。假设我们要安装 express时,可以有如下选择:

  1. 执行 npm install express --save 则表示我想在生产环境中使用 express。同时,express 的版本信息会被写入 package.json中的 dependencies 属性中。

  2. 执行 npm install express --save-dev 表示我想在开发和测试环境中使用。express 的版本信息会被写入 package.json 中的devDependencies 属性中。

--save 可以简写为 -S--save-dev 可以简写为 -D

三、其他

npm install xxx:安装项目到项目目录下,不会将模块依赖写入 devDependencies 或 dependencies 。

npm install -g xxx: -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm cinfig prefix 的位置。

 

(SAW:Game Over!)

<think>我们正在安装开发依赖,用于TypeScript项目,特别是使用Express框架的Node.js项目。 命令解释: npm install: 安装包 --save-dev: 将这些包作为开发依赖保存到package.json中 具体包的作用: typescript: TypeScript编译器 ts-node: 可以直接运行TypeScript文件(无需手动编译) @types/express: Express的TypeScript类型定义 @types/node: Node.js核心模块的TypeScript类型定义 执行此命令后,package.json的devDependencies部分将添加这些包。</think>### 安装 TypeScript 开发环境依赖 您提供的命令用于安装 TypeScript 开发环境所需的依赖: ```bash npm install typescript ts-node @types/express @types/node --save-dev ``` #### 各依赖包的作用解释: | 包名称 | 作用 | 类型 | |--------|------|------| | `typescript` | TypeScript 编译器核心 | 开发依赖 | | `ts-node` | 直接运行 TypeScript 文件(无需编译) | 开发依赖 | | `@types/express` | Express 框架的类型定义 | 开发依赖 | | `@types/node` | Node.js 核心模块的类型定义 | 开发依赖 | #### 安装后的配置步骤: 1. **初始化 TypeScript 配置**: ```bash npx tsc --init ``` 这会生成 `tsconfig.json` 文件,包含编译器选项 2. **基本 tsconfig.json 配置**: ```json { "compilerOptions": { "target": "es2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"], "exclude": ["node_modules"] } ``` 3. **创建示例 Express 应用**: 在 `src/index.ts` 中: ```typescript import express, { Request, Response } from 'express'; const app = express(); const port = 3000; app.get('/', (req: Request, res: Response) => { res.send('Hello TypeScript with Express!'); }); app.listen(port, () => { console.log(`Server running at http://localhost:${port}`); }); ``` 4. **添加运行脚本**(在 package.json 中): ```json { "scripts": { "start": "ts-node src/index.ts", "build": "tsc", "serve": "node dist/index.js" } } ``` #### 工作流程说明: 1. **开发阶段**: ```bash npm run start # 使用 ts-node 直接运行 TypeScript ``` -执行,无需手动编译 - 支持 TypeScript 类型检查 2. **生产部署**: ```bash npm run build # 编译 TypeScript 到 JavaScript npm run serve # 运行编译后的 JavaScript ``` #### 为什么需要类型定义(@types 包): 1. **类型安全**:为 JavaScript 库提供 TypeScript 类型支持 2. **智能提示**:在 IDE 中获得自动补全文档提示 3. **编译检查**:在编译捕获类型错误 4. **示例**(没有类型定义 vs 有类型定义): ```typescript // 没有 @types/express const app = require('express')(); // 无类型提示 // 有 @types/express import express from 'express'; // 完整类型支持 const app = express(); app.get('/', (req, res) => { ... }); // 参数自动提示 ``` ### 完整项目结构示例 ``` my-project/ ├── node_modules/ ├── src/ │ └── index.ts ├── package.json ├── tsconfig.json └── package-lock.json ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值