logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

JavaScript::Minifier::XS - XS based JavaScript minifier

Author

       Graham TerMarsch (cpan@howlingfrog.com)

Description

       "JavaScript::Minifier::XS" is a JavaScript "minifier"; its designed to remove unnecessary whitespace and
       comments from JavaScript files, which also not breaking the JavaScript.

       "JavaScript::Minifier::XS" is similar in function to "JavaScript::Minifier", but is substantially faster
       as its written in XS and not just pure Perl.

How It Works

       "JavaScript::Minifier::XS"  minifies  the  JavaScript  by removing unnecessary whitespace from JavaScript
       documents.  Comments (both block and line) are also removed,  except  when  (a)  they  contain  the  word
       "copyright" in them, or (b) they're needed to implement "IE Conditional Compilation".

       Internally, the minification process is done by taking multiple passes through the JavaScript document:

   Pass1:Tokenize
       First,  we  go  through  and  parse  the  JavaScript  document  into  a series of tokens internally.  The
       tokenizing process doesnot check to make sure you've got syntactically valid JavaScript, it just  breaks
       up the text into a stream of tokens suitable for processing by the subsequent stages.

   Pass2:Collapse
       We  then  march  through  the  token  list  and  collapse  certain tokens down to their smallest possible
       representation.  If they're still included in the final results we only want to  include  them  at  their
       shortest.

       Whitespace
           Runs  of  multiple  whitespace  characters are reduced down to a single whitespace character.  If the
           whitespace contains any "end of line" (EOL)  characters,  then  the  end  result  is  the  first  EOL
           character encountered.  Otherwise, the result is the first whitespace character in the run.

   Pass3:Pruning
       We then go back through the token list and prune and remove unnecessary tokens.

       Whitespace
           Wherever  possible,  whitespace  is  removed;  before+after  comment blocks, and before+after various
           symbols/sigils.

       Comments
           Comments that are either (a) IE conditional compilation  comments,  or  that  (b)  contain  the  word
           "copyright" in them are preserved.  All other comments (line and block) are removed.

       Everything else
           We keep everything else; identifiers, quoted literal strings, symbols/sigils, etc.

   Pass4:Re-assembly
       Lastly,  we  go  back through the token list and re-assemble it all back into a single JavaScript string,
       which is then returned back to the caller.

Methods

       minify($js)
           Minifies the given $js, returning the minified JavaScript back to the caller.

Name

       JavaScript::Minifier::XS - XS based JavaScript minifier

See Also

       "JavaScript::Minifier".

perl v5.40.0                                       2024-10-20                      JavaScript::Minifier::XS(3pm)

Synopsis

         use JavaScript::Minifier::XS qw(minify);
         my $js       = '...';
         my $minified = minify($js);

See Also