Skip to content

Instantly share code, notes, and snippets.

@lukebayes
Last active November 24, 2020 15:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lukebayes/84b46f8bf624fbfd63dec9bcc3cb0ffe to your computer and use it in GitHub Desktop.
Save lukebayes/84b46f8bf624fbfd63dec9bcc3cb0ffe to your computer and use it in GitHub Desktop.
###########################################################
# Build script
###########################################################
PROJECTNAME=aspen
ROOTDIR=$(shell git rev-parse --show-toplevel)
# make dev-install ARCH=armv7l to get the right version of nodejs
# Ubuntu desktop is "x86_64", Raspberry Pi is "armv7l", Nodejs
# requires "x86_64" to be "x64"
ARCH:=$(shell arch | sed "s/86_//g")
PLATFORM:=$(shell uname | tr A-Z a-z)
DATADIR=/var/data/storymachine/cypress/js/$(PROJECTNAME)
DEV_DATADIR=${ROOTDIR}/js/$(PROJECTNAME)/data
# Nodejs
NODE=lib/nodejs/bin/node
NODE_MODULES_BIN=node_modules/.bin
###########################################################
# !!!!!!!!!!!NODE_VERSION MUST MATCH ELECTRON!!!!!!!!!!!!!!
NODE_VERSION=12.18.3
###########################################################
NPM=lib/nodejs/bin/npm
# Values
SRC_FILES=$(shell find . -name "*js" ! -path "*node_modules*" ! -path "*.dist.js")
TEST_FILES=$(shell find . -name "*_test.js" ! -path "*node_modules*")
STATIC_FILES=static
DIST=dist
APP_DIST_JS="$(DIST)/app.js"
# Derived values
ESLINT=$(NODE_MODULES_BIN)/eslint
MOCHA=$(NODE_MODULES_BIN)/electron-mocha
NODEMON=${NODE_MODULES_BIN}/nodemon
NODE_FILENAME=node-v$(NODE_VERSION)-$(PLATFORM)-$(ARCH)
WEBPACK=$(NODE_MODULES_BIN)/webpack
PM2=$(NODE_MODULES_BIN)/pm2
.PHONY: build test test-w test-debug dev-install build build-module lint clean
# Build the client app distribution
$(APP_DIST_JS): ${SRC_FILES}
${NODE} webpack -o $(APP_DIST_JS) --mode development src/app.js
gzip -f $(APP_DIST_JS)
# Build any source files
build: ${NODE} ${YARN} $(NODE_MODULES_BIN) $(APP_DIST_JS)
# Run all tests
test: ${NODE}
${MOCHA} ${TEST_FILES}
# Watch for file changes and re-run tests on save.
# NOTE: Requires when-changed (https://github.com/joh/when-changed)
test-w: ${NODE}
when-changed.py ./*.js src/**/*.js ${TEST_FILES} -c "make test"
# Open a new chrome tab at chrome://inspect and click the small blue link
# that says, "Open dedicated DevTools for Node."
test-debug: ${NODE} build
${MOCHA} ${TEST_FILES} --inspect-brk
pretty: build
${NODE} ${YARNJS} pretty
integrate: clean lint test
# Run the application
run:
export ELECTRON_ENABLE_LOGGING=1 && npm start
run-production:
/bin/bash -c "\
PATH=./lib/nodejs/bin:./node_modules/.bin:$(PATH) \
NODE_ENV=production \
ELECTRON_ENABLE_LOGGING=1 \
exec \
npm start"
clean:
rm -rf dist/
# Intall development dependencies (OS X and Linux only)
dev-install: $(NODE) $(NODE_MODULES_BIN)
# Download and unpack the Node binaries into lib/nodejs.
$(NODE):
mkdir -p tmp
wget -O tmp/nodejs.tar.xz --no-check-certificate "https://nodejs.org/dist/v$(NODE_VERSION)/$(NODE_FILENAME).tar.xz"
touch tmp/nodejs.tar.xz
mkdir -p lib/nodejs
tar -xvf tmp/nodejs.tar.xz -C lib/nodejs --strip 1
touch lib/nodejs/README.md
rm -rf tmp
# Install dependencies
$(NODE_MODULES_BIN): package.json
HOME=~/.electron-gyp $(NPM) install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment