mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-09-16 18:06:55 +00:00
Moved the development server into the gulpfile and added it to the "gulp watch" command for easier development. Updated readme to reflect changes.
This commit is contained in:
parent
19f7c5669e
commit
5e286098d1
4 changed files with 66 additions and 61 deletions
18
README.md
18
README.md
|
@ -24,16 +24,14 @@ files for changes and re-build automatically with ```gulp watch```
|
||||||
FrankerFaceZ comes with a local development server that listens on port 8000
|
FrankerFaceZ comes with a local development server that listens on port 8000
|
||||||
and it serves up local development copies of files, falling back to the CDN
|
and it serves up local development copies of files, falling back to the CDN
|
||||||
when a local copy of a file isn't present. To start the server,
|
when a local copy of a file isn't present. To start the server,
|
||||||
run ```npm test```
|
run ```gulp server```
|
||||||
|
|
||||||
|
For convenience, the server is run automatically along with ```gulp watch```
|
||||||
|
|
||||||
|
|
||||||
At this time, you will also need to use the included version of the Chrome
|
Use the command ```/ffz developer_mode on``` or ```/ffz developer_mode off```
|
||||||
extension. Remove any existing copy of FrankerFaceZ from your browser and load
|
in Twitch chat to toggle developer mode on or off. You must then refresh the
|
||||||
the unpacked extension in the ```Chrome Extension``` folder.
|
page for changes to take effect. If FFZ is not working or the command otherwise
|
||||||
|
fails to work, you can open the JavaScript console on twitch.tv and run
|
||||||
Once you're using that extension, use the command ```/ffz developer_mode on```
|
```localStorage.ffzDebugMode = true;``` or
|
||||||
or ```/ffz developer_mode off``` in Twitch chat to toggle developer mode on or
|
|
||||||
off. You must then refresh the page for changes to take effect. If FFZ is not
|
|
||||||
working or the command otherwise fails to work, you can open the JavaScript
|
|
||||||
console on twitch.tv and run ```localStorage.ffzDebugMode = true;``` or
|
|
||||||
```localStorage.ffzDebugMode = false;``` to enable or disable the feature.
|
```localStorage.ffzDebugMode = false;``` to enable or disable the feature.
|
59
gulpfile.js
59
gulpfile.js
|
@ -1,3 +1,4 @@
|
||||||
|
// Dependencies
|
||||||
var fs = require('fs'),
|
var fs = require('fs'),
|
||||||
gulp = require('gulp'),
|
gulp = require('gulp'),
|
||||||
browserify = require('gulp-browserify'),
|
browserify = require('gulp-browserify'),
|
||||||
|
@ -9,6 +10,16 @@ var fs = require('fs'),
|
||||||
rename = require('gulp-rename'),
|
rename = require('gulp-rename'),
|
||||||
uglify = require('gulp-uglify');
|
uglify = require('gulp-uglify');
|
||||||
|
|
||||||
|
// Server Dependencies
|
||||||
|
var http = require("http"),
|
||||||
|
path = require("path"),
|
||||||
|
request = require("request"),
|
||||||
|
url = require("url");
|
||||||
|
|
||||||
|
var server_version = "0.1.1";
|
||||||
|
|
||||||
|
|
||||||
|
// Tasks
|
||||||
|
|
||||||
gulp.task('clean', function() {
|
gulp.task('clean', function() {
|
||||||
return gulp.src('build', {read:false})
|
return gulp.src('build', {read:false})
|
||||||
|
@ -33,8 +44,54 @@ gulp.task('scripts', ['prepare'], function() {
|
||||||
.on('error', util.log);
|
.on('error', util.log);
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('watch', ['default'], function() {
|
gulp.task('watch', ['default', 'server'], function() {
|
||||||
gulp.watch('src/**/*', ['default']);
|
gulp.watch('src/**/*', ['default']);
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('default', ['scripts']);
|
gulp.task('default', ['scripts']);
|
||||||
|
|
||||||
|
|
||||||
|
// Server
|
||||||
|
|
||||||
|
gulp.task('server', function() {
|
||||||
|
http.createServer(function(req, res) {
|
||||||
|
var uri = url.parse(req.url).pathname,
|
||||||
|
lpath = path.join(uri).split(path.sep);
|
||||||
|
|
||||||
|
if ( uri == "/dev_server" ) {
|
||||||
|
util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.green("200") + " GET " + util.colors.magenta(uri));
|
||||||
|
res.writeHead(200, {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"});
|
||||||
|
return res.end(JSON.stringify({path: process.cwd(), version: server_version}));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! lpath[0] )
|
||||||
|
lpath.shift();
|
||||||
|
|
||||||
|
if ( lpath[0] == "script" )
|
||||||
|
lpath.shift();
|
||||||
|
else
|
||||||
|
lpath.splice(0, 0, "cdn");
|
||||||
|
|
||||||
|
var file = path.join(process.cwd(), lpath.join(path.sep));
|
||||||
|
|
||||||
|
fs.exists(file, function(exists) {
|
||||||
|
if ( ! exists ) {
|
||||||
|
util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.bold.blue("CDN") + " GET " + util.colors.magenta(uri));
|
||||||
|
return request.get("http://cdn.frankerfacez.com/" + uri).pipe(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( fs.lstatSync(file).isDirectory() ) {
|
||||||
|
util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.red("403") + " GET " + util.colors.magenta(uri));
|
||||||
|
res.writeHead(403, {"Access-Control-Allow-Origin": "*"});
|
||||||
|
res.write('403 Forbidden');
|
||||||
|
return res.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.green("200") + " GET " + util.colors.magenta(uri));
|
||||||
|
res.writeHead(200, {"Access-Control-Allow-Origin": "*"});
|
||||||
|
fs.createReadStream(file).pipe(res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}).listen(8000);
|
||||||
|
util.log("[" + util.colors.cyan("HTTP") + "] Listening on Port: " + util.colors.magenta("8000"));
|
||||||
|
});
|
|
@ -18,9 +18,6 @@
|
||||||
"gulp-util": "^3.0.2",
|
"gulp-util": "^3.0.2",
|
||||||
"request": "^2.51.0"
|
"request": "^2.51.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
|
||||||
"test": "node test/server.js"
|
|
||||||
},
|
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://bitbucket.org/stendec/frankerfacez.git"
|
"url": "https://bitbucket.org/stendec/frankerfacez.git"
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
var version = "0.1.0";
|
|
||||||
|
|
||||||
var fs = require("fs"),
|
|
||||||
http = require("http"),
|
|
||||||
path = require("path"),
|
|
||||||
request = require("request"),
|
|
||||||
url = require("url");
|
|
||||||
|
|
||||||
http.createServer(function(req, res) {
|
|
||||||
var uri = url.parse(req.url).pathname,
|
|
||||||
lpath = path.join(uri).split(path.sep);
|
|
||||||
|
|
||||||
if ( uri == "/dev_server" ) {
|
|
||||||
console.log("[200] GET " + uri);
|
|
||||||
res.writeHead(200, {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"});
|
|
||||||
return res.end(JSON.stringify({path: process.cwd(), version: version}));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! lpath[0] )
|
|
||||||
lpath.shift();
|
|
||||||
|
|
||||||
if ( lpath[0] == "script" )
|
|
||||||
lpath.shift();
|
|
||||||
else
|
|
||||||
lpath.splice(0, 0, "cdn");
|
|
||||||
|
|
||||||
var file = path.join(process.cwd(), lpath.join(path.sep));
|
|
||||||
|
|
||||||
fs.exists(file, function(exists) {
|
|
||||||
if ( ! exists ) {
|
|
||||||
console.log("[CDN] GET " + uri);
|
|
||||||
return request.get("http://cdn.frankerfacez.com/" + uri).pipe(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( fs.lstatSync(file).isDirectory() ) {
|
|
||||||
console.log("[403] GET " + uri);
|
|
||||||
res.writeHead(403, {"Access-Control-Allow-Origin": "*"});
|
|
||||||
res.write('403 Forbidden');
|
|
||||||
return res.end();
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("[200] GET " + uri);
|
|
||||||
res.writeHead(200, {"Access-Control-Allow-Origin": "*"});
|
|
||||||
fs.createReadStream(file).pipe(res);
|
|
||||||
});
|
|
||||||
|
|
||||||
}).listen(8000);
|
|
Loading…
Add table
Add a link
Reference in a new issue