@cilix/lightjs 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +150 -150
  2. package/cli.js +19 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -72,156 +72,6 @@ Create a project boilerplate using Light.js's built-in backend router. Usage bel
72
72
  npx lightjs create my-app
73
73
  ```
74
74
 
75
- ## Usage
76
-
77
- ### `lightjs.compile()`
78
-
79
- Fundamentally, Light.js is a library that takes in a Light.js source tree and outputs a single HTML file or string.
80
-
81
- ```javascript
82
- const lightjs = require('lightjs');
83
-
84
- lightjs.compile({
85
- input: 'src/index.lightjs',
86
- output: 'public/index.html'
87
- });
88
- ```
89
-
90
- No other step is required for a fully reactive, bundled, minified application.
91
-
92
- This function may also be used to serve dynamic content in real time.
93
-
94
- ```javascript
95
- const express = require('express');
96
- const lightjs = require('lightjs');
97
-
98
- const app = express();
99
-
100
- app.get('/', async (req, res) => {
101
- const html = await lightjs.compile({
102
- input: 'src/index.lightjs'
103
- });
104
- res.end(html);
105
- });
106
-
107
- app.listen(3838);
108
- ```
109
-
110
- In order for the above example to have production quality speed, you must enable caching. And if desired, Javascript minification can be enabled as well:
111
-
112
- ```javascript
113
- const html = await lightjs.compile({
114
- input: 'src/index.lightjs',
115
- cache: true,
116
- minify: true
117
- });
118
- ```
119
-
120
- The last thing to know about Light.js's compile function is document data.
121
-
122
- ```javascript
123
- const html = await lightjs.compile({
124
- input: 'src/about.lightjs',
125
- data: {
126
- pageTitle: 'About me'
127
- }
128
- });
129
- ```
130
-
131
- In your Light.js document pageTitle can be found on the global 'data' object:
132
-
133
- ```javascript
134
- // index.lightjs
135
- html [
136
- head []
137
- body [
138
- h1 '{{data.pageTitle}}'
139
- ]
140
- ]
141
- ```
142
-
143
- ### `lightjs.app()`
144
-
145
- As mentioned above, Light.js ships with a built-in backend router. This router is exposed through the 'app' function, which returns a Node.js HTTP request handler.
146
-
147
- ```javascript
148
- const http = require('http');
149
- const light = require('lightjs');
150
-
151
- const PORT = 4477;
152
-
153
- const app = light.app({
154
- publicDir: './public',
155
- cache: true,
156
- minify: true,
157
- routes: {
158
- // map a route directly to a light file
159
- '/': 'src/index.light',
160
-
161
- // or for more complex arrangements, you can map the route to the same arguments you would pass to light.compile()
162
- '/blog/:id': {
163
- input: 'src/blog.light',
164
- data: async (req) => {
165
- const post = 'hi' // get blog post with req.params.id
166
- return post
167
- }
168
- }
169
- }
170
- })
171
-
172
- http.createServer(app).listen(PORT);
173
- ```
174
-
175
- Light.js's router is also completely compatible with Express:
176
-
177
- ```javascript
178
- const http = require('http');
179
- const light = require('lightjs');
180
- const express = require('express');
181
-
182
- const PORT = 4477;
183
-
184
- const app = express();
185
-
186
- const lightRouter = light.app({
187
- cache: true,
188
- minify: true,
189
- routes: {
190
- // ...
191
- }
192
- })
193
-
194
- app.use(express.static('public'));
195
- app.use(lightRouter);
196
-
197
- http.createServer(app).listen(PORT);
198
- ```
199
-
200
- Or, as previously mentioned, you can simply use `light.compile` with Express:
201
-
202
- ```javascript
203
- const http = require('http');
204
- const light = require('lightjs');
205
- const express = require('express');
206
-
207
- const PORT = 4477;
208
-
209
- const app = express();
210
-
211
- app.get('/', async (req, res) => {
212
- const html = await light.compile({
213
- input: 'src/index.light',
214
- // for production
215
- minify: true,
216
- cache: true
217
- });
218
-
219
- res.end(html);
220
- });
221
-
222
- http.createServer(app).listen(PORT);
223
- ```
224
-
225
75
  ## Syntax
226
76
 
227
77
  Light.js syntax is extremely terse but it is **not** whitespace sensitive. It's a much less shift-y version of HTML. You simply drop the angle brackets, and put children between square brackets. Tags without children as well as void tags are ended with an empty set of square brackets.
@@ -994,6 +844,156 @@ html [
994
844
  ]
995
845
  ```
996
846
 
847
+ ## Usage
848
+
849
+ ### `lightjs.compile()`
850
+
851
+ Fundamentally, Light.js is a library that takes in a Light.js source tree and outputs a single HTML file or string.
852
+
853
+ ```javascript
854
+ const lightjs = require('lightjs');
855
+
856
+ lightjs.compile({
857
+ input: 'src/index.lightjs',
858
+ output: 'public/index.html'
859
+ });
860
+ ```
861
+
862
+ No other step is required for a fully reactive, bundled, minified application.
863
+
864
+ This function may also be used to serve dynamic content in real time.
865
+
866
+ ```javascript
867
+ const express = require('express');
868
+ const lightjs = require('lightjs');
869
+
870
+ const app = express();
871
+
872
+ app.get('/', async (req, res) => {
873
+ const html = await lightjs.compile({
874
+ input: 'src/index.lightjs'
875
+ });
876
+ res.end(html);
877
+ });
878
+
879
+ app.listen(3838);
880
+ ```
881
+
882
+ In order for the above example to have production quality speed, you must enable caching. And if desired, Javascript minification can be enabled as well:
883
+
884
+ ```javascript
885
+ const html = await lightjs.compile({
886
+ input: 'src/index.lightjs',
887
+ cache: true,
888
+ minify: true
889
+ });
890
+ ```
891
+
892
+ The last thing to know about Light.js's compile function is document data.
893
+
894
+ ```javascript
895
+ const html = await lightjs.compile({
896
+ input: 'src/about.lightjs',
897
+ data: {
898
+ pageTitle: 'About me'
899
+ }
900
+ });
901
+ ```
902
+
903
+ In your Light.js document pageTitle can be found on the global 'data' object:
904
+
905
+ ```javascript
906
+ // index.lightjs
907
+ html [
908
+ head []
909
+ body [
910
+ h1 '{{data.pageTitle}}'
911
+ ]
912
+ ]
913
+ ```
914
+
915
+ ### `lightjs.app()`
916
+
917
+ As mentioned above, Light.js ships with a built-in backend router. This router is exposed through the 'app' function, which returns a Node.js HTTP request handler.
918
+
919
+ ```javascript
920
+ const http = require('http');
921
+ const light = require('lightjs');
922
+
923
+ const PORT = 4477;
924
+
925
+ const app = light.router({
926
+ publicDir: './public',
927
+ cache: true,
928
+ minify: true,
929
+ routes: {
930
+ // map a route directly to a light file
931
+ '/': 'src/index.light',
932
+
933
+ // or for more complex arrangements, you can map the route to the same arguments you would pass to light.compile()
934
+ '/blog/:id': {
935
+ input: 'src/blog.light',
936
+ data: async (req) => {
937
+ const post = 'hi' // get blog post with req.params.id
938
+ return post
939
+ }
940
+ }
941
+ }
942
+ })
943
+
944
+ http.createServer(app).listen(PORT);
945
+ ```
946
+
947
+ Light.js's router is also completely compatible with Express:
948
+
949
+ ```javascript
950
+ const http = require('http');
951
+ const light = require('lightjs');
952
+ const express = require('express');
953
+
954
+ const PORT = 4477;
955
+
956
+ const app = express();
957
+
958
+ const lightRouter = light.router({
959
+ cache: true,
960
+ minify: true,
961
+ routes: {
962
+ // ...
963
+ }
964
+ })
965
+
966
+ app.use(express.static('public'));
967
+ app.use(lightRouter);
968
+
969
+ http.createServer(app).listen(PORT);
970
+ ```
971
+
972
+ Or, as previously mentioned, you can simply use `light.compile` with Express:
973
+
974
+ ```javascript
975
+ const http = require('http');
976
+ const light = require('lightjs');
977
+ const express = require('express');
978
+
979
+ const PORT = 4477;
980
+
981
+ const app = express();
982
+
983
+ app.get('/', async (req, res) => {
984
+ const html = await light.compile({
985
+ input: 'src/index.light',
986
+ // for production
987
+ minify: true,
988
+ cache: true
989
+ });
990
+
991
+ res.end(html);
992
+ });
993
+
994
+ http.createServer(app).listen(PORT);
995
+ ```
996
+
997
997
 
998
998
  This is the entire feature set of Lightjs. If there is even one aspect of Lightjs that is missing from this document, it is considered a bug.
999
999
 
package/cli.js CHANGED
@@ -137,6 +137,15 @@ for (let i = 0; i < process.argv.length; i++) {
137
137
  }
138
138
  }
139
139
  break;
140
+ case '-i':
141
+ config.input = process.argv[++i];
142
+ break;
143
+ case '-o':
144
+ config.output = process.argv[++i];
145
+ break;
146
+ case '--minify':
147
+ config.minify = true;
148
+ break;
140
149
  default:
141
150
  break
142
151
  }
@@ -158,6 +167,16 @@ if (config.dev) {
158
167
  fs.writeFileSync(path.join(p, 'todo.light'), todoFile);
159
168
  fs.writeFileSync(path.join(p, 'server.js'), quickServer);
160
169
  fs.writeFileSync(path.join(p, 'package.json'), packageFile(config.create, pf.version));
170
+ } else if (config.input) {
171
+ if (config.output) {
172
+ light.compile({
173
+ input: config.input,
174
+ output: config.output,
175
+ minify: config.minify || false
176
+ });
177
+ } else {
178
+ light.compile(config.input).then((output) => console.log(output));
179
+ }
161
180
  } else {
162
181
  console.log(help);
163
182
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cilix/lightjs",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "A new kind of JavaScript framework",
5
5
  "main": "index.js",
6
6
  "scripts": {