【Node.js 常用命令(第五篇)】揭秘Node.js:掌握这些常用命令,让你在开发路上风生水起!

目录

前言

30条常用的 Node.js 的命令(第1~120条在上一篇)

121. gulp - 流式自动化构建系统

122. grunt - 经典的任务运行器

123. webpack-merge - 合并 Webpack 配置

124. node-gyp - Node.js 原生扩展编译器

125. socket.io - 实时应用框架

126. mongoose - MongoDB 对象建模工具

127. helmet - 提升 Express 应用安全性

128. compression - 压缩 Express 响应

129. cors - 处理跨源资源共享

130. async - 异步操作库

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 引擎解析器

143. has-binary2 - 检测二进制数据

144. finalhandler - 处理最终的 HTTP 请求

145. on-finished - 确保回调在请求完成时被调用

146. range-parser - 解析 HTTP 范围请求头

147. type-is - 类型检查

148. statuses - 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-transportnodemailer 的一个传输插件,它使用 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: '[email protected]',
  to: '[email protected]',
  subject: 'Hello',
  text: 'World'
};

transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    console.log(erro

142. socket.io-parser - Socket.IO 引擎解析器

socket.io-parsersocket.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 的生态系统中总有新的工具和命令等待你去发现和利用。

你可能感兴趣的:(经验分享类,#,前端,后端,node.js)