Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript::minify module缩小目录结构中的所有js文件?_Javascript_Perl_File_Yui_Minify - Fatal编程技术网

如何使用javascript::minify module缩小目录结构中的所有js文件?

如何使用javascript::minify module缩小目录结构中的所有js文件?,javascript,perl,file,yui,minify,Javascript,Perl,File,Yui,Minify,我想使用javascript::minify包中的minify模块缩小目录树中的所有js文件,但无法做到这一点。我成功地对单个文件进行了缩小,但在对整个目录运行时,在minify.pm文件的第345行收到了警告消息 下面是我想出的代码: use File::Find; use JavaScript::Minifier qw(minify); find(sub { if (-f and /\.js$/) { $t = 'temp.js'; open(INFILE, $_) o

我想使用javascript::minify包中的minify模块缩小目录树中的所有js文件,但无法做到这一点。我成功地对单个文件进行了缩小,但在对整个目录运行时,在minify.pm文件的第345行收到了警告消息

下面是我想出的代码:

use File::Find;
use JavaScript::Minifier qw(minify);

find(sub {
  if (-f and /\.js$/) {
    $t = 'temp.js';
    open(INFILE, $_) or die;
    open(OUTFILE, ">$t") or die;
    minify(input => *INFILE, outfile => *OUTFILE);
    close(INFILE);
    close(OUTFILE);
    rename($t,$_);
  }
}, '.');
以下是适用于单个文件的代码:

use JavaScript::Minifier qw(minify);

$file = 'ex.js';
$temp = 'temp.js';
open(INFILE, $file) or die;
open(OUTFILE, ">$temp") or die;
minify(input => *INFILE, outfile => *OUTFILE);
close(INFILE);
close(OUTFILE);
rename($temp,$file);
请提供可能的解决方案。

投诉文件为空

以下说明:

use strict;
use warnings;

use JavaScript::Minifier qw(minify);

print minify(input => '');
产出:

Use of uninitialized value in pattern match (m//) at C:/strawberry/perl/site/lib/JavaScript/Minifier.pm line 345.
因此,您有一个完全空的.js文件。解决此问题的简单方法是在处理文件之前验证文件是否包含数据:

if (-f && -s && /\.js$/) {
但是,我建议您对以下脚本进行一些清理:

use strict;
use warnings;
use autodie;

use File::Find;
use JavaScript::Minifier qw(minify);

find(sub {
    return unless -f && -s && /\.js$/;

    local @ARGV = my $file = $_;
    local $^I = '.bak';
    local $/;
    while (<>) {
        print minify(input => $_);
    }
    unlink "$file$^I"; # Optionally delete backup
}, '.');
注:

如果你在帖子中包含确切的警告信息,你可能会更快地得到答案

我已经向模块作者报告了这个错误:它是


错误消息是什么?它在ex.js上的查找内部失败了吗?如果不是,如果在递归版本中导致问题的文件上运行单个版本,会发生什么?此错误在模块的最新版本中已修复。v1.12