diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..64f4d9e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,52 @@ +# Logs +log +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git +node_modules + +# OSX +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +.AppleDouble +.LSOverride +Icon + +# Java +*.class + +# Git +.git + +# FilePizza +src +resources +log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3e288c3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:latest +MAINTAINER Alex Kern + +# install +RUN mkdir -p /filepizza +WORKDIR /filepizza +COPY package.json Makefile ./ +RUN make install +COPY . ./ + +# run +ENV NODE_ENV production +EXPOSE 80 +CMD ./dist/index.js diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0999223 --- /dev/null +++ b/Makefile @@ -0,0 +1,40 @@ +# ============================================================================== +# config + +.PHONY: all build clean install push run + +all: run + +WATCH ?= false +TAG ?= latest + +# ============================================================================== +# phony targets + +build: + ./node_modules/.bin/babel src --ignore __tests__,__mocks__ --out-dir dist + ./node_modules/.bin/webpack --optimize-minimize ./src/client + docker build -t kern/filepizza:$(TAG) . + +clean: + @ rm -rf node_modules + @ rm -rf dist + +install: + npm install + +push: build + docker push kern/filepizza:$(TAG) + +run: | node_modules + @ if [ "$(WATCH)" = false ]; then \ + ./node_modules/.bin/babel-node src; \ + else \ + ./node_modules/.bin/nodemon ./node_modules/.bin/babel-node -i dist src; \ + fi + +# ============================================================================== +# file targets + +node_modules: + npm install diff --git a/index.js b/index.js deleted file mode 100755 index 8c217e3..0000000 --- a/index.js +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/env node - -try { - require('./newrelic') - require('newrelic') -} catch (ex) { - // Don't load New Relic if the configuration file doesn't exist. -} - -module.exports = require('./dist/server') diff --git a/lib/middleware/javascript.js b/lib/middleware/javascript.js deleted file mode 100644 index 2d648ce..0000000 --- a/lib/middleware/javascript.js +++ /dev/null @@ -1,7 +0,0 @@ -var path = require('path') - -var CLIENT_MODULE_PATH = path.resolve(__dirname, '../client.js') - -module.exports = function (req, res) { - res.sendFile(CLIENT_MODULE_PATH) -} diff --git a/package.json b/package.json index ede0375..dc8fd1d 100644 --- a/package.json +++ b/package.json @@ -2,30 +2,43 @@ "name": "filepizza", "version": "0.2.4", "description": "Free peer-to-peer file transfers in your browser.", + "preferGlobal": "true", + "bin": "./dist/index.js", + "author": "Alex Kern (http://kern.io)", + "license": "BSD-3-Clause", + "homepage": "https://github.com/kern/filepizza", "scripts": { - "clean": "rm -rf dist && mkdir -p dist", - "prepublish": "npm run build:prod", - "build:prod": "npm run build:prod:server && npm run build:prod:client", - "build:prod:server": "./node_modules/.bin/babel lib -d dist", - "build:prod:client": "./node_modules/.bin/browserify lib/client.js -t babelify -t uglifyify | ./node_modules/.bin/uglifyjs -cm > dist/client.js", - "build:dev": "npm run build:dev:server && npm run build:dev:client", - "build:dev:server": "./node_modules/.bin/babel lib -d dist -s inline", - "build:dev:client": "./node_modules/.bin/browserify lib/client.js -t babelify -o dist/client.js -d", - "watch": "./node_modules/.bin/nodemon -w lib --exec 'npm run build:dev && npm run start'", - "start": "node index.js" + "start": "make run" }, "repository": { "type": "git", "url": "git@github.com:kern/filepizza.git" }, - "author": "Alex Kern (http://kern.io)", - "license": "BSD-3-Clause", "bugs": { "url": "https://github.com/kern/filepizza/issues" }, - "homepage": "https://github.com/kern/filepizza", + "engines": { + "node": ">= 5.0.0", + "npm": ">= 3.3.0" + }, + "babel": { + "presets": [ + "es2015", + "stage-0" + ], + "plugins": [ + "add-module-exports", + "transform-react-jsx" + ] + }, "dependencies": { "alt": "^0.14.4", + "babel-cli": "^6.6.5", + "babel-loader": "^6.2.4", + "babel-plugin-add-module-exports": "^0.1.2", + "babel-plugin-transform-react-jsx": "^6.7.4", + "babel-preset-es2015": "^6.6.0", + "babel-preset-stage-0": "^6.5.0", "classnames": "^1.2.0", "express": "^4.12.0", "express-force-ssl": "^0.3.0", @@ -42,21 +55,15 @@ "socket.io-client": "^1.3.5", "stylus": "^0.50.0", "twilio": "^2.3.0", + "webpack": "^1.12.14", "webrtcsupport": "^2.1.2", + "webtorrent": "^0.90.3", "winston": "^1.0.1", "xkcd-password": "^1.2.0" }, - "engines": { - "node": "0.12.x" - }, - "preferGlobal": "true", - "bin": "./index.js", "devDependencies": { - "babel": "^5.8.23", - "babelify": "^6.3.0", - "browserify": "^11.0.1", + "json-loader": "^0.5.4", "nodemon": "^1.4.1", - "uglify-js": "^2.4.24", - "uglifyify": "^3.0.1" + "webpack-dev-middleware": "^1.6.1" } } diff --git a/assets/arrow.ai b/resources/arrow.ai similarity index 100% rename from assets/arrow.ai rename to resources/arrow.ai diff --git a/assets/pizza.psd b/resources/pizza.psd similarity index 100% rename from assets/pizza.psd rename to resources/pizza.psd diff --git a/lib/actions/DownloadActions.js b/src/actions/DownloadActions.js similarity index 100% rename from lib/actions/DownloadActions.js rename to src/actions/DownloadActions.js diff --git a/lib/actions/SupportActions.js b/src/actions/SupportActions.js similarity index 100% rename from lib/actions/SupportActions.js rename to src/actions/SupportActions.js diff --git a/lib/actions/UploadActions.js b/src/actions/UploadActions.js similarity index 100% rename from lib/actions/UploadActions.js rename to src/actions/UploadActions.js diff --git a/lib/alt.js b/src/alt.js similarity index 100% rename from lib/alt.js rename to src/alt.js diff --git a/lib/client.js b/src/client.js similarity index 100% rename from lib/client.js rename to src/client.js diff --git a/lib/components/App.js b/src/components/App.js similarity index 97% rename from lib/components/App.js rename to src/components/App.js index 213593f..ca93410 100644 --- a/lib/components/App.js +++ b/src/components/App.js @@ -43,7 +43,6 @@ export default class App extends React.Component { -