目录
30条常用的 Node.js 的命令(第1~120条在上一篇)
123. webpack-merge - 合并 Webpack 配置
124. node-gyp - Node.js 原生扩展编译器
126. mongoose - MongoDB 对象建模工具
127. helmet - 提升 Express 应用安全性
128. compression - 压缩 Express 响应
131. eslint-config-prettier - 与 Prettier 配合的 ESLint 配置
132. eslint-plugin-prettier - ESLint 与 Prettier 插件
133. eslint-config-airbnb - Airbnb 的 ESLint 配置
134. eslint-plugin-import - 管理 ES6 模块导入的 ESLint 插件
135. eslint-config-standard - 标准的 ESLint 配置
136. eslint-friendly-formatter - 更友好的 ESLint 格式化器
137. eslint-plugin-node - 针对 Node.js 的 ESLint 插件
138. eslint-plugin-promise - 管理 Promise 的 ESLint 插件
139. eslint-plugin-standard - 标准的 ESLint 插件
140. eslint-plugin-jsx-a11y - 提高 JSX 可访问性的 ESLint 插件
141. nodemailer-smtp-transport - SMTP 传输插件
142. socket.io-parser - Socket.IO 引擎解析器
144. finalhandler - 处理最终的 HTTP 请求
145. on-finished - 确保回调在请求完成时被调用
146. range-parser - 解析 HTTP 范围请求头
149. content-disposition - 设置响应的内容Disposition
150. forwarded - 解析 X-Forwarded-For 头部
前言
承接我上一篇发的文章,我们来继续探索 Node.js 的高级工具和命令,可以深入了解一些特定用途的工具,这些工具在特定场景下非常有用,可以帮助开发者解决复杂的问题,提高开发效率。
就先出五篇,共150条命令,有需要更多或需要哪方面命令的可以私聊我。
30条常用的 Node.js 的命令(第1~120条在上一篇)
121. gulp
- 流式自动化构建系统
gulp
是一个基于流的自动化构建系统,它允许你自动化常见的开发任务,如压缩、编译、单元测试等。
# 安装 gulp 及其插件
npm install --save-dev gulp gulp-sass gulp-uglify
# 创建一个 gulp 任务
const gulp = require('gulp');
const sass = require('gulp-sass');
const uglify = require('gulp-uglify');
gulp.task('sass', () => gulp.src('src/*.scss').pipe(sass()).pipe(gulp.dest('dist')));
gulp.task('uglify', () => gulp.src('src/*.js').pipe(uglify()).pipe(gulp.dest('dist')));
gulp.task('default', gulp.series('sass', 'uglify'));
122. grunt
- 经典的任务运行器
grunt
是一个 JavaScript 项目自动化的命令行工具,它提供了大量的插件来执行各种任务。
# 安装 grunt 及其插件
npm install --save-dev grunt grunt-contrib-sass grunt-contrib-uglify
# 初始化 grunt 配置文件
grunt.initConfig({
sass: {
dist: {
files: [{
expand: true,
cwd: 'src/',
src: ['*.scss'],
dest: 'dist/',
ext: '.css'
}]
}
},
uglify: {
my_target: {
files: {
'dist/build.min.js': ['src/*.js']
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['sass', 'uglify']);
123. webpack-merge
- 合并 Webpack 配置
webpack-merge
是一个帮助合并 Webpack 配置对象的工具,非常适合在开发和生产环境之间共享和区分配置。
# 安装 webpack-merge
npm install webpack-merge --save-dev
# 使用 webpack-merge 合并配置
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
const dev = require('./webpack.dev.js');
module.exports = merge(common, dev);
124. node-gyp
- Node.js 原生扩展编译器
node-gyp
是一个工具,用于编译 Node.js 的原生扩展模块,它支持 Windows、Linux 和 macOS。
# 使用 node-gyp 编译原生模块
npm install -g node-gyp
node-gyp configure
node-gyp build
125. socket.io
- 实时应用框架
socket.io
是一个实现实时双向事件通信的库,它支持 WebSocket 和其他通信机制。
# 安装 socket.io
npm install socket.io
# 创建一个 socket.io 服务器
const server = require('http');
const io = require('socket.io')(server);
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
server.listen(3000);
126. mongoose
- MongoDB 对象建模工具
mongoose
是一个 MongoDB 对象建模(ODM)工具,它提供了丰富的 API 来处理数据库操作。
# 安装 mongoose
npm install mongoose
# 连接 MongoDB 并定义模型
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
const user = new User({ name: 'John Doe', age: 30 });
user.save((err) => {
if (err) return console.error(err);
console.log('User saved!');
});
127. helmet
- 提升 Express 应用安全性
helmet
是一个 Express 中间件,用于设置 HTTP 头部以提高应用的安全性。
# 安装 helmet
npm install helmet --save-dev
# 使用 helmet 保护 Express 应用
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
128. compression
- 压缩 Express 响应
compression
是一个 Express 中间件,用于压缩响应,减少传输数据的大小,提高加载速度。
# 安装 compression
npm install compression --save dev
# 使用 compression 压缩响应
const compression = require('compression');
app.use(compression());
129. cors
- 处理跨源资源共享
cors
是一个 Node.js 中间件,用于实现跨源资源共享(CORS),简化了跨域请求的处理。
# 安装 cors
npm install cors --save dev
# 使用 cors 处理跨域请求
const cors = require('cors');
app.use(cors());
130. async
- 异步操作库
async
是一个 Node.js 库,提供了简单的、同步风格的函数来执行异步操作。
# 安装 async
npm install async --save-dev
# 使用 async 并行执行异步任务
const async = require('async');
async.parallel([
(callback) => {
setTimeout(callback, 1000, 'one');
},
(callback) => {
setTimeout(callback, 3000, 'two');
},
(callback) => {
setTimeout(callback, 5000, 'three');
}
], (err, results) => {
console.log(results);
});
131. eslint-config-prettier
- 与 Prettier 配合的 ESLint 配置
eslint-config-prettier
是一个 ESLint 配置,它使你能够将 ESLint 与 Prettier 配合使用,确保代码风格和格式化的一致性。
# 安装 eslint-config-prettier
npm install eslint-config-prettier --save-dev
# 在 ESLint 配置文件中使用
{
"extends": ["eslint:recommended", "plugin:prettier/recommended"]
}
132. eslint-plugin-prettier
- ESLint 与 Prettier 插件
eslint-plugin-prettier
是一个 ESLint 插件,它允许你将 Prettier 作为自定义规则来使用,从而在 ESLint 中集成代码格式化检查。
# 安装 eslint-plugin-prettier
npm install eslint-plugin-prettier --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["prettier"],
"rules": {
"prettier/prettier": ["error", { "singleQuote": true }]
}
}
133. eslint-config-airbnb
- Airbnb 的 ESLint 配置
eslint-config-airbnb
是一个基于 Airbnb 代码风格指南的 ESLint 配置,它提供了一套严格的代码风格规则。
# 安装 eslint-config-airbnb
npm install eslint-config-airbnb --save-dev
# 在 ESLint 配置文件中使用
{
"extends": ["airbnb"]
}
134. eslint-plugin-import
- 管理 ES6 模块导入的 ESLint 插件
eslint-plugin-import
是一个 ESLint 插件,它帮助你管理 ES6 模块导入,并防止模块导入错误。
# 安装 eslint-plugin-import
npm install eslint-plugin-import --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["import"],
"rules": {
"import/no-unresolved": 2,
"import/no-extraneous-dependencies": 2
}
}
135. eslint-config-standard
- 标准的 ESLint 配置
eslint-config-standard
是一个 ESLint 配置,它基于标准 JavaScript 风格指南,提供了一套基础的代码风格规则。
# 安装 eslint-config-standard
npm install eslint-config-standard --save-dev
# 在 ESLint 配置文件中使用
{
"extends": ["standard"]
}
136. eslint-friendly-formatter
- 更友好的 ESLint 格式化器
eslint-friendly-formatter
是一个 ESLint 格式化器,它提供了更友好的错误输出,使得阅读和处理 ESLint 报告更加容易。
# 安装 eslint-friendly-formatter
npm install eslint-friendly-formatter --save-dev
# 在 ESLint 配置文件中使用
{
"formatter": "eslint-friendly-formatter"
}
137. eslint-plugin-node
- 针对 Node.js 的 ESLint 插件
eslint-plugin-node
是一个 ESLint 插件,它提供了针对 Node.js 环境的规则,帮助你避免常见的 Node.js 相关错误。
# 安装 eslint-plugin-node
npm install eslint-plugin-node --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["node"],
"rules": {
"node/no-missing-require": 2,
"node/no-unpublished-require": 2
}
}
138. eslint-plugin-promise
- 管理 Promise 的 ESLint 插件
eslint-plugin-promise
是一个 ESLint 插件,它帮助你确保 Promise 被正确使用,避免未捕获的 Promise 异常。
# 安装 eslint-plugin-promise
npm install eslint-plugin-promise --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["promise"],
"rules": {
"promise/no-promise-in-callback": 2,
"promise/no-return-in-finally": 2
}
}
139. eslint-plugin-standard
- 标准的 ESLint 插件
eslint-plugin-standard
是一个 ESLint 插件,它提供了一些标准的规则扩展,增强了 ESLint 的核心规则集。
# 安装 eslint-plugin-standard
npm install eslint-plugin-standard --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["standard"]
}
140. eslint-plugin-jsx-a11y
- 提高 JSX 可访问性的 ESLint 插件
eslint-plugin-jsx-a11y
是一个 ESLint 插件,专注于改善 JSX 代码的可访问性,确保你的应用对所有用户都是友好的。
# 安装 eslint-plugin-jsx-a11y
npm install eslint-plugin-jsx-a11y --save-dev
# 在 ESLint 配置文件中使用
{
"plugins": ["jsx-a11y"],
"rules": {
"jsx-a11y/accessible-emoji": 2,
"jsx-a11y/alt-text": 2
}
}
141. nodemailer-smtp-transport
- SMTP 传输插件
nodemailer-smtp-transport
是 nodemailer
的一个传输插件,它使用 SMTP 协议发送电子邮件,允许配置多个 SMTP 服务器和认证选项。
# 安装 nodemailer-smtp-transport
npm install nodemailer-smtp-transport
# 使用 nodemailer-smtp-transport 发送邮件
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
const transporter = nodemailer.createTransport(smtpTransport({
host: 'smtp.example.com',
port: 587,
auth: {
user: 'username',
pass: 'password'
}
}));
const mailOptions = {
from: 'sender@example.com',
to: 'recipient@example.com',
subject: 'Hello',
text: 'World'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(erro
142. socket.io-parser
- Socket.IO 引擎解析器
socket.io-parser
是 socket.io
的一个解析器,它负责解析和编码引擎之间传输的消息。
# 安装 socket.io-parser
npm install socket.io-parser
# 使用 socket.io-parser 处理消息
const parser = require('socket.io-parser');
const msg = parser.encode({ type: 'message', data: ['hello'] });
console.log(msg);
143. has-binary2
- 检测二进制数据
has-binary2
是一个中间件,用于检测房间或消息中是否包含二进制数据,通常与 Socket.IO 一起使用。
# 安装 has-binary2
npm install has-binary2
# 使用 has-binary2 中间件
const io = require('socket.io')();
const hasBinary = require('has-binary2');
io.use(hasBinary);
io.on('connection', (socket) => {
socket.on('message', (msg) => {
if (hasBinary(msg)) {
console.log('Binary message received');
} else {
console.log('Text message received');
}
});
});
144. finalhandler
- 处理最终的 HTTP 请求
finalhandler
是一个 Node.js 函数,用于处理 Node.js 中的请求,并且可以被用作 Express 应用的最终处理函数。
# 安装 finalhandler
npm install finalhandler
# 使用 finalhandler 处理请求
const finalhandler = require('finalhandler');
const http = require('http');
const serveStatic = require('serve-static');
const serve = serveStatic('./public');
const server = http.createServer((req, res) => {
serve(req, res, finalhandler(req, res));
});
145. on-finished
- 确保回调在请求完成时被调用
on-finished
是一个 Node.js 函数,它注册一个回调函数,该回调函数会在请求完全处理完成时被调用。
# 安装 on-finished
npm install on-finished
# 使用 on-finished 处理请求完成
const onFinished = require('on-finished');
const server = http.createServer((req, res) => {
onFinished(req, res, () => {
console.log('Request finished');
});
});
146. range-parser
- 解析 HTTP 范围请求头
range-parser
是一个 Node.js 函数,用于解析 HTTP 范围请求头,通常用于处理文件下载和流式传输。
# 安装 range-parser
npm install range-parser
# 使用 range-parser 解析范围请求
const rangeParser = require('range-parser');
const headers = {
'range': 'bytes=0-100'
};
const ranges = rangeParser(headers.range, 1000);
console.log(ranges);
147. type-is
- 类型检查
type-is
是一个 Node.js 函数,用于检查给定的 MIME 类型是否与请求的类型匹配。
# 安装 type-is
npm install type-is
# 使用 type-is 检查内容类型
const typeIs = require('type-is');
const req = {
headers: {
'content-type': 'application/json'
}
};
const isJson = typeIs(req, ['json']);
console.log(isJson);
148. statuses
- HTTP 状态码
statuses
是一个包含所有 HTTP 状态码的对象,它提供了状态码的名称和是否表示成功、重定向、客户端错误或服务器错误的信息。
# 安装 statuses
npm install statuses
# 使用 statuses 获取状态码信息
const statuses = require('statuses');
console.log(statuses.OK);
console.log(statuses.is.redirect(302));
149. content-disposition
- 设置响应的内容Disposition
content-disposition
是一个 Node.js 函数,用于创建 Content-Disposition 响应头,通常用于控制浏览器中的文件下载行为。
# 安装 content-disposition
npm install content-disposition
# 使用 content-disposition 设置响应头
const contentDisposition = require('content-disposition');
const headers = contentDisposition('filename.txt');
console.log(headers);
150. forwarded
- 解析 X-Forwarded-For 头部
forwarded
是一个 Node.js 函数,用于解析 X-Forwarded-For 头部,通常用于确定客户端的 IP 地址,特别是在代理或负载均衡器后面。
# 安装 forwarded
npm install forwarded
# 使用 forwarded 解析 X-Forwarded-For 头部
const forwarded = require('forwarded');
const req = {
headers: {
'x-forwarded-for': 'client, proxy1, proxy2'
}
};
const info = forwarded(req);
console.log(info);
总结
这些工具和库覆盖了 Node.js 开发的多个方面,包括邮件发送、实时通信、HTTP 请求处理、内容协商、状态码管理、内容分发和代理支持。掌握这些工具将帮助你构建更加健壮、高效和可维护的 Node.js 应用。随着你的项目需求不断增长,Node.js 的生态系统中总有新的工具和命令等待你去发现和利用。