首页
/ Ecstatic 项目技术文档

Ecstatic 项目技术文档

2024-12-24 23:47:14作者:侯霆垣

1. 安装指南

1.1 使用 npm 安装

1.1.1 作为库安装

要将 Ecstatic 作为库安装到你的项目中,请在项目目录下运行以下命令:

npm install --save ecstatic

1.1.2 作为 CLI 工具安装

如果你希望将 Ecstatic 作为命令行工具使用,可以全局安装:

npm install ecstatic -g

或者,你也可以在本地安装并使用 npm runscripts 将其添加到 $PATH,或者直接引用 ./node_modules/.bin/ecstatic

2. 项目的使用说明

2.1 使用示例

2.1.1 与 Express 4.x 一起使用

'use strict';

const express = require('express');
const ecstatic = require('ecstatic');
const http = require('http');

const app = express();

app.use(ecstatic({
  root: `${__dirname}/public`,
  showdir: true,
}));

http.createServer(app).listen(8080);

console.log('Listening on :8080');

2.1.2 使用原生 HTTP 服务器

'use strict';

const http = require('http');

const ecstatic = require('ecstatic')({
  root: `${__dirname}/public`,
  showDir: true,
  autoIndex: true,
});

http.createServer(ecstatic).listen(8080);

console.log('Listening on :8080');

2.1.3 允许 fall through

ecstatic({ root: __dirname + '/public', handleError: false })

2.1.4 使用 CLI

ecstatic ./public --port 8080

3. 项目API使用文档

3.1 ecstatic(opts)

在 Node.js 中,传递一个选项对象给 ecstatic,它将返回一个中间件函数。

const opts = {
  root: path.join(__dirname, 'public'),
  baseDir: '/',
  autoIndex: true,
  showDir: true,
  showDotfiles: true,
  humanReadable: true,
  hidePermissions: false,
  si: false,
  cache: 'max-age=3600',
  cors: false,
  gzip: true,
  brotli: false,
  defaultExt: 'html',
  handleError: true,
  serverHeader: true,
  contentType: 'application/octet-stream',
  weakEtags: true,
  weakCompare: true,
  handleOptionsMethod: false,
}

如果 opts 是一个字符串,它将被分配给 root 文件夹,其他选项将设置为默认值。

3.2 CLI 模式

在 CLI 模式下,所有选项都与上述相同,但通过 optimist 风格传递。port 默认值为 8000。如果没有传递 dir--root dir 参数,Ecstatic 将服务当前目录。Ecstatic 还尊重 PORT 环境变量。

3.3 选项详解

3.3.1 opts.root / --root {root}

opts.root 是你希望服务的目录。

3.3.2 opts.host / --host {host}

在 CLI 模式下,opts.host 是你希望 Ecstatic 监听的主机。默认值为 0.0.0.0。可以通过 --host 标志或 HOST 环境变量覆盖。

3.3.3 opts.port / --port {port}

在 CLI 模式下,opts.port 是你希望 Ecstatic 监听的端口。默认值为 8000。可以通过 --port 标志或 PORT 环境变量覆盖。

3.3.4 opts.baseDir / --baseDir {dir}

opts.baseDir 默认为 /,但可以更改以允许你的静态文件从特定路由提供服务。

3.3.5 opts.cache / --cache {value}

自定义缓存控制。

3.3.6 opts.showDir / --no-showDir

关闭目录列表。

3.3.7 opts.showDotfiles / --no-showDotfiles

从目录列表中排除点文件。

3.3.8 opts.humanReadable / --no-human-readable

如果启用了 showDir,添加人类可读的文件大小。

3.3.9 opts.hidePermissions / --hide-permissions

如果启用了 hidePermissions,文件权限将不会显示。

3.3.10 opts.headers / --H {HeaderA: valA} [--H {HeaderB: valB}]

在每个响应上设置头。

3.3.11 opts.si / --si

如果启用了 showDirhumanReadable,打印文件大小时使用基数 1000 而不是基数 1024。

3.3.12 opts.autoIndex / --no-autoindex

当请求 /path/ 时,服务 /path/index.html

3.3.13 opts.defaultExt / --defaultExt {ext}

启用默认文件扩展名。

3.3.14 opts.gzip / --no-gzip

默认情况下,Ecstatic 将服务 ./public/some-file.js.gz 而不是 ./public/some-file.js

3.3.15 opts.brotli / --brotli

服务 ./public/some-file.js.br 而不是 ./public/some-file.js

3.3.16 opts.serverHeader / --no-server-header

设置 opts.serverHeaderfalse 以关闭在所有响应上设置 Server 头。

3.3.17 opts.contentType / --content-type {type}

设置默认的 Content-Type 头值。

3.3.18 opts.mimeTypes / --mime-types {filename}

添加新的或覆盖一个或多个 MIME 类型。

3.3.19 opts.handleError

关闭 handleErrors 以允许 fall-through。

3.3.20 opts.weakEtags / --no-weak-etags

设置 opts.weakEtagsfalse 以生成强 ETag 而不是弱 ETag。

3.3.21 opts.weakCompare / --no-weak-compare

关闭 weakCompare 以禁用弱比较函数。

3.3.22 opts.handleOptionsMethod / --handle-options-method

设置 handleOptionsMethodtrue 以响应 OPTIONS 调用。

3.3.23 opts.cors / --cors

这是一个便利设置,用于快速启用跨域资源共享。

4. 项目安装方式

4.1 使用 npm 安装

npm install --save ecstatic

4.2 全局安装 CLI 工具

npm install ecstatic -g

4.3 本地安装并使用

npm install ecstatic

然后可以使用 ./node_modules/.bin/ecstatic 来运行 CLI 工具。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
861
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
596
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K