缩小可以通过终端执行的工具


35

我要寻找一个工具或方法来缩小(类似于压缩我的代码和这个问题的代码在我的堆栈)所有.xml.css.html.js文件通过Ubuntu的终端。最终,我将对这个过程进行bash脚本编写,但是目前,我只想找到一些要测试的东西。有没有可以用来通过终端压缩所有这些文件格式的工具?


2
你尝试过类似的东西tar -czvf compressed.tar.gz *.xml *.css *.html *.php吗?
roadmr

1
我正在寻找压缩代码本身。类似CSS缩减大小
DᴀʀᴛʜVᴀᴅᴇʀ

1
然后,我认为您不是在要求压缩。通过压缩常规文件(非媒体,例如音乐/视频),我们通常只考虑无损压缩,但是您正在寻找一种最小化空白(丢失此数据的方式)的方法。而且由于缩小是有损的,因此您无法解压缩(因为它不可逆)。对我来说,这使得“不清楚您要问什么”。
gertvdijk

Answers:


43

这不是最佳选择,但可能是最简单的选择。长期以来,YUI压缩器一直被认为是Javascript和CSS的最佳压缩器,与其他压缩器相比可提高20-40%。

从那以后,它已被Uglify.JS之类的较新项目所取代(Grunt可能会建议这样做),但是在Ubuntu中启动和运行它仍然是一件相当容易的事情。

sudo apt-get install yui-compressor

而已。现在,您可以运行,yui-compressor myfile.js并且可以正常运行,就像正确安装Node / Grunt / Uglify + YUI堆栈一样方便。


15
并非每个使用js或css的人都在使用node.js或进行node.js项目。如果要使用grunt,这是另一个需要学习和配置的框架。是的,咕unt声很酷。但是如今,我们甚至已经可以开始编码之前,已经有足够的知识来学习。因此,节点/咕unt声并不总是很方便。:)我本人将尝试您对yui-compressor的建议。
Bill Rosmus 2014年

2
@BillR我有点同意这种观点,但是尽管我没有任何node.js项目,但我仍然使用lessc和uglify.js之类的东西,因为它们是完成工作的最佳工具。我不使用Grunt,因为我已经用自己的工具替换了它,但是在实际工作中,我绝不会为了避免Node而费心。如果您想留在行业中,则必须跟上最佳实践。
奥利(Oli)

您假设使用节点是最佳实践。也许在您的世界中,这不是每个人的世界。
比尔·罗斯穆斯

2
您对我已经有五年了,但是我不知道您的意思是...您还在使用带有“ DHTML”和perl CGI脚本的静态HTML4吗?还在使用ASP?还是随着更好的技术使自己可用而改变了一切?在这方面,我们有两个单独的要点:变得有点傻了。我不在乎您是否不喜欢再培训,但我确实在乎您发现,使用more-cssNPM软件包来缩小CSS的程度比使用yui-compressor更具侵入性。不是。这只是另一个命令,可以更好地完成相同的操作。
奥利(Oli)

1
请注意,通过此安装,您还将要安装openjkd,这是某些人不希望在系统中使用的东西。
realnice

12

您可以从命令行使用node和uglify- js轻松缩小js :

  • 用安装uglify-js npm install uglify-js -g

  • 运行 uglifyjs app-test.js > app-test.min.js


对于CSS,我建议使用clean-css(可能是npm上最稳定的CSS缩小器)
示例用法:

cleancss -o public-min.css public.css

就html而言,缩小通常不值得花费时间来进行设置,但是我尝试了html-minifier,它是一个了不起的工具。

无论您做什么,都必须确保对要提供的内容进行gzip压缩。


1
uglify 可以直接安装sudo apt-get install node-uglify
Gery

请注意,uglify-js仅适用于Javascript,不适用于CSS或其他文件。
JoseGómez'16

2
@Gery如果要安装uglifyapt也需要安装node-legacy,所以运行sudo apt install node-uglify node-legacy
mxdsp

请注意,cleancssCLI工具现在位于clean-css-cli软件包中。
jbg

7

使用缩小 -不像其他的建议,这个工具minifies很多更多的文件类型:

CSS     text/css
HTM     text/html
HTML    text/html
JS      text/javascript
JSON    application/json
SVG     image/svg+xml
XML     text/xml

用javascript做得很差。
费德里科

2

没有理由减少php文件(除非您的磁盘空间非常有限,并且想使用其中的每一点)。

如果您可以添加一个目标(您想完成什么以及为什么要这样做?),那么有人可能会向您展示一种更好的方法。

JS和CSS文件会在运行时最小化并缓存在大多数Web项目中。有一个minify(https://github.com/mrclay/minify),它是一个php“库”,可以完全做到这一点。(也可以从终端用php执行)

但请记住,一个大的javascript文件加载速度不一定比5个小文件快。如果您需要此声明的理由和解决方案,请访问http://headjs.com/

愿消息来源与您同在...


1

我建议使用Grunt.js。这是一个自动化工具,具有可作为插件使用的压缩器,并且可以通过Node.js在终端中运行。由于代码在服务器端执行,并且仅将HTML输出发送到客户端,因此不必压缩PHP。

您可以在此处找到可用的插件


2
请注意,选择Grunt表示学习曲线。
Rick-777

1

我使用Closure Compiler取得了不错的效果。

Closure Compiler是使JavaScript下载和运行速度更快的工具。它不是从源语言编译为机器代码,而是从JavaScript编译为更好的JavaScript。它解析您的JavaScript,对其进行分析,删除无效代码,然后重写并最大程度地减少剩余内容。它还会检查语法,变量引用和类型,并警告常见的JavaScript陷阱。

它由Google开发并用Java编写。它与基于Debian的系统打包在一起closure-compiler,可以轻松地安装在Ubuntu系统上。由于它不使用GUI,因此需要更轻便的default-jre-headless软件包。

YUI压缩器的速度较慢,但​​是生成的文件大小(略)小。它还打印有用的警告消息,类似于其他编程语言的编译器。

文档:入门

用法:

closure-compiler --js input.js --js_output_file output.js

如果您使用它启动项目并将对象扩展到单独的文件等中,则关闭确实非常好。但是对于现有项目,这相当糟糕。
Alexis Wilke

-1

另一个选择是使用npx来自Node.js的命令。npx运行Node.js程序包的命令,而无需显式安装它。

# Minify JS
npx -p uglify-js uglifyjs -o app.min.js app.js common.js

# Minify CSS
npx clean-css-cli -o style.min.css css/bootstrap.css style.css

# Minify HTML
npx html-minifier index-2.html -o index.html --remove-comments --collapse-whitespace

# XML
npx pretty-data-cli --type xml --minify input.xml > input.min.xml
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.