diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..5b8d731 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,34 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018 + }, + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ] + } +} \ No newline at end of file diff --git a/build.js b/build.js index eacc0df..acd172f 100644 --- a/build.js +++ b/build.js @@ -1,12 +1,12 @@ -var fs = require('fs-extra'); -var hbs = require('handlebars'); -var glob = require("glob"); -var sass = require("sass"); -var path = require("path"); -var gulp = require('gulp'); -var include = require('gulp-include'); +const fs = require('fs-extra'); +const hbs = require('handlebars'); +const glob = require('glob'); +const sass = require('sass'); +const path = require('path'); +const gulp = require('gulp'); +const include = require('gulp-include'); -const BUILDDIR = './build'; +const BUILDDIR = process.argv[2] || './build/'; const SLUG = 'pixel-editor'; console.log('Building Pixel Editor'); @@ -15,79 +15,43 @@ hbs.registerHelper('svg', require('handlebars-helper-svg')); require('hbs-register-helpers')(hbs,'./_ext/modules/hbs/helpers/**/*.js'); require('hbs-register-partials')(hbs,'./_ext/modules/hbs/_*.hbs'); -//empty the build folder, or create it +// empty the build folder, or create it fs.emptyDirSync(BUILDDIR); -//copy images -fs.copySync('./images','./build/'+SLUG); +// copy images +fs.copySync('./images',path.join(BUILDDIR, SLUG)); -//render js +// render js gulp.src('./js/*.js') - .pipe(include({includePaths: [ - '_ext/scripts', - 'js', - '!js/_*.js', - ]})) + .pipe(include({includePaths: [ + '_ext/scripts', + 'js', + '!js/_*.js', + ]})) .on('error', console.log) - .pipe(gulp.dest('build/'+SLUG)); + .pipe(gulp.dest(path.join(BUILDDIR, SLUG))); -//render css +// render css var sassFiles = glob.sync('css/*.scss'); sassFiles.forEach((s) => { var f = sass.renderSync({file: s, outFile: 'test.css', includePaths: ['css', '_ext/sass', '_ext/modules/css']}); - console.log('compiling:',path.basename(f.stats.entry)) - fs.writeFileSync('build/'+SLUG+'/'+path.basename(f.stats.entry,'scss')+'css', f.css); + console.log('compiling:',path.basename(f.stats.entry)); + fs.writeFileSync(path.join(BUILDDIR, SLUG, path.basename(f.stats.entry,'scss') + 'css'), f.css); }); -//compile page -var pageTemplate = hbs.compile(fs.readFileSync('./views/'+SLUG+'.hbs',{encoding: 'utf8'})); +// compile page +var pageTemplate = hbs.compile(fs.readFileSync(path.join('./views/', SLUG + '.hbs'),{encoding: 'utf8'})); var page = pageTemplate({ - projectSlug: SLUG, - title: 'Lospec Pixel Editor', - layout: false, + projectSlug: SLUG, + title: 'Lospec Pixel Editor', + layout: false, }); -//save output -fs.writeFileSync('./build/index.htm',page); - - -//server -const express = require('express'); -const app = express(); - - -//ROUTE - index.htm -app.get('/', (req, res) => { - res.sendFile(path.join(__dirname+'/build/index.htm'), {}, function (err) { - if (err) console.log('error sending file',err); - else { - setTimeout(()=>{ - console.log('closing server') - server.close(); - process.exit(); - },1000*10); - } - }); -}); - -//ROUTE - other files -app.use(express.static(path.join(__dirname, 'build'))); - -//start server -var server = app.listen(3000, () => { - console.log('\nTemp server started at http://localhost:3000!'); - //console.log('press ctrl+c to stop '); - - var opn = require('opn'); - - // opens the url in the default browser - opn('http://localhost:3000'); - - -}); +// save output +fs.writeFileSync(path.join(BUILDDIR, 'index.htm'),page); diff --git a/package.json b/package.json index c2251a6..06ec548 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "description": "Online pixel art creation tool", "main": "build.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "node ./build.js ./build", + "serve": "node ./server.js ./build 3000", + "test": "npm run build && npm run serve" }, "author": "Lospec", "license": "ISC", diff --git a/server.js b/server.js new file mode 100644 index 0000000..e4ac19c --- /dev/null +++ b/server.js @@ -0,0 +1,37 @@ +const path = require('path'); +const express = require('express'); + +const app = express(); + +const BUILDDIR = process.argv[2] || './build'; +const PORT = process.argv[3] || 3000; + +//ROUTE - index.htm +app.get('/', (req, res) => { + res.sendFile(path.join(__dirname, BUILDDIR, 'index.htm'), {}, function (err) { + if(err){ + console.log('error sending file',err); + } else { + setTimeout(()=>{ + console.log('closing server'); + server.close(); + process.exit(); + },1000*10); + } + }); +}); + +//ROUTE - other files +app.use(express.static(path.join(__dirname, BUILDDIR))); + +//start server +var server = app.listen(PORT, () => { + console.log(`\nTemp server started at http://localhost:${PORT}!`); + //console.log('press ctrl+c to stop '); + + var opn = require('opn'); + + // opens the url in the default browser + opn(`http://localhost:${PORT}`); +}); +