首页
/ Deadweight 项目技术文档

Deadweight 项目技术文档

2024-12-12 05:58:17作者:范靓好Udolf

1. 安装指南

由于 Deadweight 项目已经不再维护,建议使用其他工具如 PurifyCSS 或 UnCSS。如果你仍然希望使用 Deadweight,可以按照以下步骤进行安装:

$ gem install deadweight

2. 项目的使用说明

Deadweight 是一个 CSS 覆盖率工具,用于检测给定样式表和 URL 中实际使用的选择器,并报告可以安全删除的选择器。

2.1 从命令行运行

你可以通过命令行直接运行 Deadweight,以下是一些示例:

$ deadweight -s styles.css -s ie.css index.html about.html
$ deadweight -s http://www.tigerbloodwins.com/index.css http://www.tigerbloodwins.com/
$ deadweight --root http://kottke.org/ -s '/templates/2009/css.php?p=mac' / /everfresh /about

2.2 与集成测试集成

Deadweight 可以与 Rails 集成测试结合使用,自动捕获测试过程中返回的所有页面,无需手动指定大量 URL 和登录过程。

首先,在 Gemfile 中添加以下内容:

group :test do
  gem 'colored'
  gem 'deadweight', :require => 'deadweight/hijack/rails'
end

然后,通过设置环境变量 DEADWEIGHTtrue 来运行集成测试:

rake test DEADWEIGHT=true
rake cucumber DEADWEIGHT=true

2.3 Rake 任务

你还可以创建一个 Rake 任务来运行 Deadweight:

# lib/tasks/deadweight.rake

require 'deadweight'

Deadweight::RakeTask.new do |dw|
  dw.stylesheets = ["/stylesheets/style.css"]
  dw.pages = ["/", "/page/1", "/about"]
end

运行 rake deadweight 将输出所有未使用的规则,每行一个。

2.4 直接从 Ruby 调用

你也可以直接在 Ruby 代码中调用 Deadweight:

require 'deadweight'

dw = Deadweight.new
dw.stylesheets = ["/stylesheets/style.css"]
dw.pages = ["/", "/page/1", "/about"]
puts dw.run

2.5 从 STDIN 输入 CSS 规则

你可以通过管道将 CSS 规则从 STDIN 输入到 Deadweight:

$ cat styles.css | deadweight index.html

2.6 使用 HTTP 代理

Deadweight 还可以作为 HTTP 代理使用:

$ deadweight -l deadweight.log -s styles.css -w http://github.com/ -P

3. 项目 API 使用文档

3.1 设置根 URL

默认情况下,Deadweight 使用 http://localhost:3000 作为所有路径的基础 URL。你可以通过设置 root 来更改它:

dw.root = "http://staging.example.com"      # 测试服务器
dw.root = "http://example.com/staging-area" # URL 可以包含路径
dw.root = "/path/to/some/html"              # 本地路径也适用

3.2 忽略由 JavaScript 添加的内容

Deadweight 完全忽略由 JavaScript 层添加的类、ID 或标签,但你可以通过设置 ignore_selectors 来过滤它们:

dw.ignore_selectors = /hover|lightbox|superimposed_kittens/

3.3 使用 Mechanize 处理复杂情况

你可以设置 mechanizetrue,并添加一个 Proc 到 pages,Deadweight 将使用 Mechanize 执行它:

dw.mechanize = true

# 通过登录表单访问受保护的 URL
dw.pages << proc {
  fetch('/login')
  form = agent.page.forms.first
  form.username = 'username'
  form.password = 'password'
  agent.submit(form)
  fetch('/secret-page')
}

# 使用 HTTP 基本认证
dw.pages << proc {
  agent.auth('username', 'password')
  fetch('/other-secret-page')
}

agent 方法返回 Mechanize 实例,fetch 方法是一个包装器,用于在 HTTP 错误状态时中止。

4. 项目安装方式

Deadweight 的安装方式非常简单,只需使用 RubyGems 进行安装:

$ gem install deadweight

安装完成后,你可以通过命令行或 Ruby 代码直接使用 Deadweight。

热门项目推荐
相关项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
610
115
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
286
79
mdmd
✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、色盘取色、多图上传、一键下载文档、自定义 CSS 样式、一键重置等特性
Vue
111
25
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
60
48
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
45
29
go-stockgo-stock
🦄🦄🦄AI赋能股票分析:自选股行情获取,成本盈亏展示,涨跌报警推送,市场整体/个股情绪分析,K线技术指标分析等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。
Go
1
0
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
205
57
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
376
36
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
182
44
frogfrog
这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。
Java
8
0