| SHELL := /bin/bash -euo pipefail |
| export PATH := $(V23_ROOT)/release/go/bin:node_modules/.bin:$(V23_ROOT)/third_party/cout/node/bin:$(PATH) |
| |
| # This target causes any target files to be deleted if the target task fails. |
| # This is especially useful for browserify, which creates files even if it |
| # fails. |
| .DELETE_ON_ERROR: |
| |
| # Default browserify options: use sourcemaps. |
| BROWSERIFY_OPTS := --debug |
| # Names that should not be mangled by minification. |
| RESERVED_NAMES := 'context,ctx,callback,cb,$$stream,serverCall' |
| # Don't mangle RESERVED_NAMES, and screw ie8. |
| MANGLE_OPTS := --mangle [--except $(RESERVED_NAMES) --screw_ie8 ] |
| # Don't remove unused variables from function arguments, which could mess up signatures. |
| # Also don't evaulate constant expressions, since we rely on them to conditionally require modules only in node. |
| COMPRESS_OPTS := --compress [ --no-unused --no-evaluate ] |
| |
| # Browserify and extract sourcemap, but do not minify. |
| define BROWSERIFY |
| mkdir -p $(dir $2) |
| browserify $1 $(BROWSERIFY_OPTS) | exorcist $2.map > $2 |
| endef |
| |
| # Browserify, minify, and extract sourcemap. |
| define BROWSERIFY-MIN |
| mkdir -p $(dir $2) |
| browserify $1 $(BROWSERIFY_OPTS) --g [ uglifyify $(MANGLE_OPTS) $(COMPRESS_OPTS) ] | exorcist $2.map > $2 |
| endef |
| |
| node_modules: package.json |
| npm prune |
| npm install |
| # Link Vanadium from V23_ROOT. |
| rm -rf ./node_modules/vanadium |
| cd "$(V23_ROOT)/release/javascript/core" && npm link |
| npm link vanadium |
| touch node_modules |
| |
| src/gen-vdl: $(shell find ../go/src/ -name "*.vdl") |
| v23 run vdl generate --lang=javascript --js-out-dir=src/gen-vdl v.io/x/media_sharing |
| |
| build/bundle.js: src/index.js $(shell find src/ -name "*.js") src/gen-vdl lint node_modules |
| ifdef MINIFY |
| $(call BROWSERIFY-MIN,$<,$@) |
| else |
| $(call BROWSERIFY,$<,$@) |
| endif |
| |
| build/index.html: public/index.html |
| mkdir -p build |
| cp $< $@ |
| |
| build/style.css: public/style.css |
| mkdir -p build |
| cp $< $@ |
| |
| build: build/bundle.js build/index.html build/style.css |
| |
| serve: build |
| static build |
| |
| .PHONY: lint |
| lint: node_modules |
| jshint . |
| |
| .PHONY: clean |
| clean: |
| rm -rf \ |
| build \ |
| node_modules |