|
1 |
|
2 # Squish - One language to write them all, one squisher to squish them |
|
3 |
|
4 Squish is a simple script to build a single file out of multiple scripts, modules, and other files. |
|
5 |
|
6 For example if you have a script called A, and it requires modules X, Y and Z, all of them could be squished |
|
7 into a single file, B. |
|
8 |
|
9 When run, Squish reads a file called 'squishy' in the current (or specified) directory, which contains |
|
10 instructions on how to squish a project. |
|
11 |
|
12 For an example you can see Squish's own squishy file, included in this package. For reference, see below. |
|
13 |
|
14 ## Squishing |
|
15 |
|
16 Running squish will search for a 'squishy' file in the current directory. Alternatively you can pass to squish |
|
17 a directory to look in. |
|
18 |
|
19 Command-line options vary depending on what features squish has been built with. Below are the standard ones. |
|
20 |
|
21 ### Minify |
|
22 'Minification' is the act of condensing source code by stripping out spaces, line breaks, comments and anything |
|
23 that isn't required to be there. Although the source code is re-organised and changed, the program is still the |
|
24 same and runs without any changes. |
|
25 |
|
26 #### --no-minify |
|
27 Disable minification of the output file after squishing. Default is to minify. |
|
28 |
|
29 #### --minify-level=level |
|
30 The level may be one of: none, basic, default, full |
|
31 |
|
32 They vary in effectiveness, and the time taken to process large files. Experiment! |
|
33 |
|
34 ### Uglify |
|
35 'Uglification' is the name Squish gives to a certain basic form of compression. With large files it can reduce the |
|
36 size by some kilobytes, even after full minification. It works by replacing Lua keywords with a single byte and |
|
37 inserting code at the start of the script to expand the keywords when it is run. |
|
38 |
|
39 #### --uglify |
|
40 Enable the uglification filter. Default is to not uglify. |
|
41 |
|
42 ### Compile |
|
43 Squish can compile the resulting file to Lua bytecode. This is experimental at this stage (you may get better results |
|
44 with luac right now), however it's a work in progress. Compiling to bytecode can actually increase the size of |
|
45 minified output, but it can speed up loading (not that you would notice it anyway, since the Lua compiler is so fast). |
|
46 |
|
47 #### --compile |
|
48 Enables compilation of the output file. |
|
49 |
|
50 ## Squishy reference |
|
51 |
|
52 A squishy file is actually a Lua script which calls some Squish functions. These functions are listed here. |
|
53 |
|
54 ### Module "name" "path" |
|
55 Adds the specified module to the list of those to be squished into the output file. The optional path specifies |
|
56 where to find the file (relative to the squishy file), otherwise Squish will attempt to find the module itself. |
|
57 |
|
58 ### Main "script.lua" |
|
59 Adds a script into the squished output. Scripts are executed in the order specified in the squishy file, but only |
|
60 after all modules have been loaded. |
|
61 |
|
62 ### Output "filename.lua" |
|
63 Names the output file. If none is specified, the default is 'squished.out.lua'. |
|
64 |
|
65 ### Option "name" "value" |
|
66 Sets the specified option, to 'true', or to the optional given value. This allows a squishy file to set default |
|
67 command-line options. |
|
68 |
|
69 ### GetOption "name" |
|
70 Returns the current value of the given option. |
|
71 |
|
72 ### Resource "name" "path" |
|
73 Adds a 'resource' to the squished file. A resource may be any file, text, binary, large or small. Scripts can |
|
74 retrieve the resource at runtime by calling require_resource("name"). If no path is given then the name is used |
|
75 as the path. |
|
76 |
|
77 ### AutoFetchURL "url" |
|
78 **Experimental** feature which is subject to change. When specified, all the following Module statements will be |
|
79 fetched via HTTP if not found on the filesystem. A ? (question mark) in the URL is replaced by the relative path |
|
80 of the module file that was given in the Module statement. |