在上传时自动缩小CSS和Javascript

Jar*_*ard 10 javascript css upload minify

有没有人知道通过上传处理​​脚本自动运行某些文件类型的好方法?当我将它们上传到服务器时,我正在尝试自动缩小CSS和Javascript,在本地保留一个漂亮的,人类可读的版本,同时在服务器上保留一个缩小的版本.我目前正在Windows上使用WinSCP,它在某种程度上是可编写脚本的,但可能不够编写脚本.我可能需要一些拼凑在一起的解决方案,所以不要害怕用胶带暗示一些东西; 但是,我确实需要在本地计算机上进行缩小并上传压缩文件,因为我使用共享主机并且无法在服务器上安装垃圾.

谢谢.

Wil*_*rin 7

我建议创建一个makefile来解决这个特殊问题,这里是一个快速而脏的makefile我正用于我的网站:

PUBDIR=../../static/js/
OUTDIR=./build/
COMPRESSOR=../yui/build/yuicompressor-2.4.2.jar
ARGS=
VPATH=${OUTDIR}
INST_TARGETS=${OUTDIR}jgblue.js

jgblue.js: combined.js
    java -jar ${COMPRESSOR} ${ARGS} ${OUTDIR}$< -o ${OUTDIR}$@

combined.js: main.js listview.js tabs.js
    cat $^ > ${OUTDIR}$@

.PHONY: install

install:
    cp ${INST_TARGETS} ${PUBDIR}
Run Code Online (Sandbox Code Playgroud)

然后你需要输入的是:

make && make install
Run Code Online (Sandbox Code Playgroud)

首先,它将所有开发文件并将它们连接成一个文件,然后连接文件被压缩并复制到您的公共目录中.我使用YUICompressor进行压缩,效果很好.


nic*_*ckf 6

好吧,缩小CSS只是几个正则表达式.

// (PHP) but should be easily portable to any language
function compressCSS($css) {
    return
        preg_replace(
            array('@\s\s+@','@(\w+:)\s*([\w\s,#]+;?)@'),
            array(' ','$1$2'),
            str_replace(
                array("\r","\n","\t",' {','} ',';}'),
                array('','','','{','}','}'),
                preg_replace('@/\*[^*]*\*+([^/][^*]*\*+)*/@', '', $css)
            )
        )
    ;
}
Run Code Online (Sandbox Code Playgroud)

Dean Edwards的Javascript打包器已经移植到PHP,Perl,.NET和WSH,所以如果你使用这些技术中的任何一种,你实际上可以让它在你自己的服务器上运行....记得缓存结果!

  • @Jarett有时我们的问题最好用其他方法回答. (11认同)
  • 我怎能敢回答那些不回答我问题的答案! (3认同)
  • 不是在答案完全忽略了问题的时候.如果我要求最好的minifier,我的问题将立即关闭作为复制. (2认同)

Sam*_*son 5

由于你是共享主机,我建议使用YUICompressor,并在上传之前运行你的css/js文件.一定不要丢失原始文件 - 这可能是一个让未来发生变化的痛苦.

您还可以在服务器上放置一个脚本,该脚本会定期重写您的css/js文件,通过minify-process传递它们,并在上传后手动调用此脚本.

  • 这里的态度很糟糕 (16认同)