README

changeset 17
3d4ba37b1554
child 35
8843ea9f9e27
equal deleted inserted replaced
16:aaf1b38007d8 17:3d4ba37b1554
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.

mercurial