跳转到主要内容

CSS HTML JS Minifier

项目描述

# css-html-js-minify

Async 单文件跨平台无依赖性 Minifier for the Web. [![GPL License](http://img.shields.io/badge/license-GPL-blue.svg?style=plastic)](https://open-source.org.cn/licenses/GPL-3.0) [![LGPL License](http://img.shields.io/badge/license-LGPL-blue.svg?style=plastic)](https://open-source.org.cn/licenses/LGPL-3.0) [![Python Version](https://img.shields.io/badge/Python-3-brightgreen.svg?style=plastic)](https://pythonlang.cn) [![Travis report](https://travis-ci.org/juancarlospaco/css-html-js-minify.svg?branch=master "Travis-C.I. Testing report")](https://travis-ci.org/juancarlospaco/css-html-js-minify)

![screenshot](https://source.unsplash.com/q78PYnUehV8/800x402 "Illustrative Photo by https://unsplash.com/@s_erwin")


https://pypi.python.org/pypi/css-html-js-minify

```shell
css-html-js-minify.py --help

用法:css-html-js-minify.py [-h] [--version] [--wrap] [--prefix PREFIX]
[--timestamp] [--quiet] [--hash] [--zipy]
[--sort] [--comments] [--overwrite]
[--after AFTER] [--before BEFORE] [--watch]
[--multiple] [--beep]
fullpath

CSS-HTML-JS-Minify. StandAlone Async cross-platform Unicode-ready Python3-ready Minifier for the Web.

位置参数
fullpath 本地文件或文件夹的完整路径。

可选参数
-h, --help 显示此帮助信息并退出
--version 显示程序版本号并退出
--wrap 将输出包裹为每行 ~80 个字符,仅限 CSS。
--prefix PREFIX 在输出文件名前添加前缀字符串。
--timestamp 在所有 CSS/JS 输出文件上添加时间戳。
--quiet 安静,无声,强制禁用所有日志。
--hash 在文件名上添加 SHA1 HEX-Digest 11字符哈希。
--zipy GZIP 压缩为 '*.gz' 的最小化文件,仅限 CSS/JS。
--sort 按字母顺序排序 CSS 属性,仅限 CSS。
--comments 保留注释,仅限 CSS/HTML(不推荐)
--overwrite 强制覆盖所有就地(不推荐)
--after AFTER 运行后要执行的命令(实验性)。
--before BEFORE 运行前要执行的命令(实验性)。
--watch 如果文件更改则重新压缩(实验性)。
--multiple 允许多个实例(不推荐)。

CSS-HTML-JS-Minify:接受文件或文件夹的完整路径字符串,并处理所有
找到的 CSS/HTML/JS。如果参数不是文件/文件夹,将失败。检查更新
适用于 Python3。从标准输入到标准输出的用法已弃用,因为它可能因
Unicode 字符而失败。文件名上的 SHA1 HEX-Digest 11 字符哈希用于
服务器缓存。CSS 属性按字母顺序排序,以帮助查找克隆项,
选择器则不排序。监视适用于整个文件夹,运行之间至少有 ~60 秒的间隔。


```

- 接受任何内容的完整路径,文件或文件夹,然后解析、优化和压缩以用于生产。
- 如果完整路径是包含多个文件的文件夹,它将使用异步多进程。
- 将漂亮的彩色日志打印到标准输出和 OS 临时文件夹中的日志文件。
- 设置自己的进程名称并显示在进程列表中。
- 可以检查自己的更新。
- 完全支持 Unicode/UTF-8。
- 平滑的 CPU 使用率,单实例检查。
- 可以混淆、GZIP 和哈希文件,还可以监视文件的更改。
- 可以在运行前后执行任意命令。
- `*.css` 文件保存为 `*.min.css`,`*.js` 保存为 `*.min.js`,`*.htm` 保存为 `*.html`


# 截图

**Linux:**

![screenshot](https://raw.githubusercontent.com/juancarlospaco/css-html-js-minify/master/linux-css-html-js-compressor.jpg "Linux 32bit/64bit Python2/Python3")

**Apple Mac Os X:**
[ <sup>*(由 Loggerhead 提供)*</sup> ](https://github.com/juancarlospaco/css-html-js-minify/issues/7#issuecomment-97280835)
![screenshot](https://raw.githubusercontent.com/juancarlospaco/css-html-js-minify/master/osx-css-html-js-compressor_terminal.jpg "Apple Mac Os X Terminal by Loggerhead")

![screenshot](https://raw.githubusercontent.com/juancarlospaco/css-html-js-minify/master/osx-css-html-js-compressor_iterm2.jpg "Apple Mac Os X iTerm2 by Loggerhead")

**MS Windows:**

![screenshot](https://raw.githubusercontent.com/juancarlospaco/css-html-js-minify/master/windows-css-html-js-compressor.jpg "MS Windows 32bit/64bit Python2/Python3")


# 命令行使用

```bash
css-html-js-minify.py file.htm

css-html-js-minify.py file.css

css-html-js-minify.py file.js

css-html-js-minify.py /project/static/
```

# Python 代码使用

```python
from css_html_js_minify import process_single_html_file, process_single_js_file, process_single_css_file, html_minify, js_minify, css_minify

process_single_html_file('test.htm', overwrite=False)
# 'test.html'
process_single_js_file('test.js', overwrite=False)
# 'test.min.js'
process_single_css_file('test.css', overwrite=False)
# 'test.min.css'

html_minify(' <p>yolo<a href="/" >o </a > <!-- hello --></p>')
# '<p>yolo<a href="/" >o </a > </p>'
js_minify('var i = 1; i += 2 ;\n alert( "hello " ); //hi')
# 'var i=1;i+=2;alert("hello ");'
css_minify('body {width: 50px;}\np {margin-top: 1em;/* hi */ }', comments=False)
# '@charset utf-8;body{width:50px}p{margin-top:1em}'
```

这些函数接受的可选参数几乎与命令行标志相同。
请参阅上面的列表(只需使用 add_hash 而不是 hash 即可)。


# 安装

```
pip安装css-html-js-minify
```
卸载 `pip uninstall css-html-js-minify`


# 为什么?

- **为什么还需要另一个压缩器?**,现在有很多用于网页文件的压缩器!;*或者可能没有?*。
许多仅能在Django/Flask或PHP/Java/Ruby框架内部使用,或者无法处理整个文件夹。
本项目是另一个项目的“大哥”,该项目执行相反的操作,即[网页美化器](https://github.com/juancarlospaco/css-html-prettify#css-html-prettify)


# 迁移

为了保持简单(KISS原则),可读性强的缩进和注释可编辑的HTML保持为`*.htm`,压缩的用于生产的为`*.html`。这受到JavaScript/CSS `*.min.js`和`*.min.css`的启发。[我们并未“发明”这种文件扩展名。](http://en.wikipedia.org/wiki/HTM)

要从典型的文件扩展名HTML迁移到HTM(完全相同),您可以运行以下命令:

```shell
find . -name "*.html" -exec rename "s/.html/.htm/" "{}" \;
```

这将递归地从当前文件夹复制所有`*.html`并重命名为`*.htm`,不会删除任何内容。


# 必需条件

- [Python 3.6+](https://pythonlang.cn "Python官网")


# 编码风格指南

- 必须通过Lint、[PEP-8](https://pythonlang.cn/dev/peps/pep-0008)、[PEP-257](https://pythonlang.cn/dev/peps/pep-0257)、[iSort](https://github.com/timothycrosley/isort)。`pip install pep8 isort`
- 如果有任何类型的测试,它们必须通过。没有测试也可以接受,但有测试会更好。


# JavaScript支持

- 由于变化迅速,主要由Node.JS版本驱动,ES6和ES7以及未来的标准可能不会完全支持。
- 未来JavaScript支持是独立的,如果您想使ES6、ES7工作,请随意发送拉取请求,我们会合并它。


# 贡献者

- **请在GitHub上为这个仓库点赞!**,这有助于更快地出现在搜索结果中。
- [帮助](https://help.github.com/articles/using-pull-requests) 和更多 [帮助](https://help.github.com/articles/fork-a-repo) 以及交互式快速 [Git教程](https://try.github.io)。


# 许可证

- GNU GPL、GNU LGPL和[MIT](https://github.com/juancarlospaco/css-html-js-minify/issues/65#issuecomment-330983569)。

此作品是免费软件
您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,无论是许可证的第3版,还是(根据您的选择)任何后续版本。
分发此作品是为了希望它将是有用的,但没有任何保证;
甚至没有关于其商业性或适用于特定目的的暗示性保证。
有关详细信息,请参阅GNU通用公共许可证。
您应该已经随此作品一起收到GNU通用公共许可证的副本。


# 示例

<details>

**输入CSS:**

```css
/*!
* 保留注释
*/


/* 删除注释 */
.class, #NotHex, input[type="text"], a:hover {
font-family : Helvetica Neue, Arial, Helvetica, 'Liberation Sans', sans-serif;
border: none;
margin: 0 0 0 0;
border-color: fuchsia;
color: mediumspringgreen;
background-position:0 0;;
transform-origin:0 0;
margin: 0px !important;
font-weight :bold;
color: rgb( 255, 255, 255 );
padding : 0.9px;
position : absolute;
z-index : 100000;
color: #000000;
background-color: #FFFFFF;
background-image: url("data:image/jpeg;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=");
;}
;;

```

**Uglify (NodeJS):** *(474 Bytes, 0.189 Secs)*

```css
/* * 保留注释 */ .class,#NotHex,input[type="text"],a:hover {font-family:Helvetica Neue,Arial,Helvetica,'Liberation Sans',sans-serif;border:0;margin:0;border-color:fuchsia;color:mediumspringgreen;background-position:0 0;transform-origin:0 0;margin:0 !important;font-weight:bold;color:#fff;padding:.9px;position:absolute;z-index:100000;color:#000;background-color:#fff;background-image:url("data:image/jpeg;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=")};
```

**css-html-js-minify (Python3):** *(469 Bytes, 0.010 Secs)*

```css
/*!* 保留注释 */ .class,#NotHex,input[type=text],a:hover{font-family:Helvetica Neue,Arial,Helvetica,'Liberation Sans',sans-serif;border:0;margin:0;border-color:#f0f;color:#00fa9a;background-position:0 0;transform-origin:0 0;margin:0 !important;font-weight:700;color:#fff;padding:.9px;position:absolute;z-index:100000;color:#000;background-color:#FFF;background-image:url(data:image/jpg;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=)}
```

</details>


道德和人文主义政策

- 希望这个自由开源软件(FLOSS)始终保持纯洁和干净,无广告软件(AdWare)、无垃圾邮件(Spamm)、无捆绑软件(BundleWare)、无信息广告(Infomercial)、无恶意软件(MalWare)。
- 本项目对 [LGBTQQIAAP 友好](http://www.urbandictionary.com/define.php?term=LGBTQQIAAP "什么是 LGBTQQIAAP")。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

css-html-js-minify-2.5.5.zip (33.2 kB 查看哈希值)

上传时间 源代码

构建分发

css_html_js_minify-2.5.5-py3.6.egg (24.8 kB 查看哈希值)

上传时间 源代码

css_html_js_minify-2.5.5-py2.py3-none-any.whl (40.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面