首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用正则表达式通过PHP缩小JS

使用正则表达式通过PHP缩小JS
EN

Stack Overflow用户
提问于 2018-06-24 02:07:19
回答 2查看 2.6K关注 0票数 1

有没有人会建议我关于JS的缩小?我试着创建它,但没有成功。我们将在示例中向您展示:https://code.jquery.com/jquery-3.3.1.js

我想要

  1. 删除除http & https或内部字符串之外的所有注释
  2. 将代码合并到一行
  3. 删除所有不必要的空格

我尝试了互联网上的许多例子,但这一直都是错误的。即使是我发现的任何minifier都没有错误地做到这一点,所以我想写一个简单的自己的minifier。我不想使用任何插件。我只想要一个干净的正则表达式。

你能尽量简化这个例子吗?无论是空间、评论还是其他改进或花招?

到目前为止,我有这个,它也不能工作,

代码语言:javascript
复制
    '(\/\/[^\n\]*[\n\r]+)' => ''
    '/\/\*[\s\S]*?\*\//' => ''
    '#[\r\n]+#' => ''
    '/ {2,}/' => ''
EN

回答 2

Stack Overflow用户

发布于 2018-06-24 04:26:06

如果你想用正则表达式来做这件事,你需要多个表达式:

  1. 多行注释

  • Single行注释:

  • Whitespace:

在PHP中(显然你不需要命名你的键,只是为了冗长):

代码语言:javascript
复制
<?php

$url = "https://code.jquery.com/jquery-3.3.1.js";
$data = file_get_contents($url);

$expressions = array(
    'MULTILINE_COMMENT'     => '\Q/*\E[\s\S]+?\Q*/\E',
    'SINGLELINE_COMMENT'    => '(?:http|ftp)s?://(*SKIP)(*FAIL)|//.+',
    'WHITESPACE'            => '^\s+|\R\s*'
);

foreach ($expressions as $key => $expr) {
    $data = preg_replace('~'.$expr.'~m', '', $data);
}

echo $data;
?>
票数 0
EN

Stack Overflow用户

发布于 2018-06-24 04:33:55

这可能不是我们想要的答案,但是caddy服务器会在运行时进行缩小。这是非常容易设置和提供绿色的自动锁定https。

示例Caddyfile,带有cors,缩小,日志,gzip压缩,通过php。

代码语言:javascript
复制
mysite.com {
    root ./mysitefolder/
    gzip
    log ../mysite.log
    minify /
    cors
    fastcgi / /var/run/php/php7.2-fpm.sock {
        ext .php
        split.php
        index index.php
    }
}

https://caddyserver.com/docs/http.minify

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51003817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档