Difference between revisions of "pas2js minifier"
From Lazarus wiki
Jump to navigationJump to searchLine 29: | Line 29: | ||
* After install restart applications like Lazarus so they get the new PATH, which is needed by uglifyjs to work. | * After install restart applications like Lazarus so they get the new PATH, which is needed by uglifyjs to work. | ||
* Find out the path of uglifyjs.cmd, for example by typing ''where uglifyjs'' | * Find out the path of uglifyjs.cmd, for example by typing ''where uglifyjs'' | ||
− | * With pas2js 1.1: | + | * In Lazarus: |
− | * With pas2js 1.0: Set the ''Execute After'' command: ''C:\path\of\uglifyjs.cmd -oproject1.js project1.js''. Replace ''project1.js'' with the name of your js file. | + | ** With pas2js 1.1: Add to the custom compiler options '''"-JpcmdC:\path\of\uglifyjs.cmd"'''. Note that ''-Jpcmd'' is case sensitive. |
+ | ** With pas2js 1.0: Set the ''Execute After'' command: ''C:\path\of\uglifyjs.cmd -oproject1.js project1.js''. Replace ''project1.js'' with the name of your js file. | ||
==Linux/MacOS== | ==Linux/MacOS== |
Revision as of 18:11, 19 November 2018
Overview
This page explains ways to reduce and/or compress the pas2js generated JavaScript.
Omit unneeded code
- Use pas2js option -Jc to generate one JavaScript program. This allows the compiler to use Whole Program Optimization (wpo) to determine all unused identifiers.
- Use -O1 to omit unused identifiers. If a record/class is used, every unused member/method is omitted.
- By default published properties/methods are kept and will generate type information (RTTI). If you don't need that you can ...
- use {$modeswitch omitrtti} (since pas2js 1.1), which treats class section 'published' as 'public' and typeinfo() does not work on symbols declared with this switch.
- use -OoRemoveNotUsedPublished to omit all published properties not referenced at compile time.
Third party minifier
There are several free minifiers for JavaScript. A minifier removes unneeded characters and replaces some code without changing its functionality.
As an example here is how to use uglifyjs with pas2js:
Windows
- Download and install "node" form https://nodejs.org/en/download/
- Start the "Node.js command prompt". This starts a console, which is setup with an environment for Node.js and npm.
- In the prompt type
npm install uglify-js -g
and press <enter> This will download and install uglifyjs as a command line app. Test it by typing
uglifyjs -h
This should give the list of uglifyjs options.
- After install restart applications like Lazarus so they get the new PATH, which is needed by uglifyjs to work.
- Find out the path of uglifyjs.cmd, for example by typing where uglifyjs
- In Lazarus:
- With pas2js 1.1: Add to the custom compiler options "-JpcmdC:\path\of\uglifyjs.cmd". Note that -Jpcmd is case sensitive.
- With pas2js 1.0: Set the Execute After command: C:\path\of\uglifyjs.cmd -oproject1.js project1.js. Replace project1.js with the name of your js file.
Linux/MacOS
- Install npm
- Open a terminal and do:
sudo npm install uglify-js -g
This will download and install uglifyjs as a command line app. Test it by typing
uglifyjs -h
This should give the list of uglifyjs options.
- With pas2js 1.1: In Lazarus add to the custom compiler options -Jpcmduglifyjs. This is the option -Jpcmd plus the path to uglifyjs.
- With pas2js 1.0: Set the Execute After command: uglifyjs -oproject1.js project1.js. Replace project1.js with the name of your js file.