.PHONY: all esm cjs ESM_LOCATION=./esm CJS_LOCATION=./cjs all: esm cjs esm: mkdir $(ESM_LOCATION) --parents tsc --module es6 --outDir $(ESM_LOCATION) cp ./package.template.json $(ESM_LOCATION)/package.json cjs: mkdir $(CJS_LOCATION) --parents tsc --module commonjs --outDir $(CJS_LOCATION) cp ./package.template.json $(CJS_LOCATION)/package.json watch: @echo To have Typescript auto-rebuild, run the following commands in new terminals @echo "\tmake watch-esm" @echo "\tmake watch-cjs" @echo These processes will not terminate, which is why they cannot be run in the same rule watch-esm: tsc --module es6 --outDir $(ESM_LOCATION) --watch watch-cjs: tsc --module commonjs --outDir $(CJS_LOCATION) --watch