Skip to content

Instantly share code, notes, and snippets.

@dillonhicks
Created December 19, 2020 19:03
Show Gist options
  • Select an option

  • Save dillonhicks/90559af3e1745dc3ba4121d142ee3dda to your computer and use it in GitHub Desktop.

Select an option

Save dillonhicks/90559af3e1745dc3ba4121d142ee3dda to your computer and use it in GitHub Desktop.
NodeProject.makefile.template
SHELL:=/bin/bash
.PHONY: all bootstrap serve clean build
proj.root.dir:=$(PWD)
proj.tools:=tools
proj.tools.dir:=$(proj.root.dir)/$(proj.tools)
proj.nvm.dir:=$(proj.tools.dir)/nvm
proj.nvm.env:=$(proj.nvm.dir)/nvm.sh
proj.node.version:=v14.14.0
proj.node:=$(proj.nvm.dir)/versions/node/$(proj.node.version)
# EXTRA BUILD COMMANDS HERE
#
proj.build.cmd:=cargo build --release --target=wasm32-unknown-unknown
# CLEAN COMMANDS/FILES HERE
#
proj.clean.cmd:=cargo clean
proj.clean.file-patterns:=( \
Cargo.lock \
target/ \
package-lock.json \
dist/ \
pkg/* \
)
export NVM_DIR=$(proj.nvm.dir)
export NODE_VERSION=$(proj.node.version)
all: run
run: bootstrap build
source $(proj.nvm.env) && npm run serve
build: bootstrap $(proj.tools)
$(proj.build.cmd)
source $(proj.nvm.env) && npm run build
bootstrap: package-lock.json
package-lock.json: node
source $(proj.nvm.env) && npm install
$(proj.tools): nvm npm node
npm: node
node: nvm $(proj.node)
$(proj.node): nvm
source $(proj.nvm.env) && nvm install $(proj.node.version) && nvm use $(proj.node.version)
nvm: $(proj.nvm.env)
$(proj.nvm.env):
mkdir -p $(proj.nvm.dir)
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
clean:
$(proj.clean.cmd)
-rm -rfv \
Cargo.lock \
target/ \
package-lock.json \
dist/ \
node_modules/ \
pkg/*
really-clean:
-rm -rfv $(proj.tools.dir)
-rm -rfv $(proj.clean.file-patterns)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment