Makefile (3668B)
1 .PHONY: build dist lint setup copy serve clean metrics test zip contrib 2 build: lint build/katex.min.js build/katex.min.css contrib zip compress 3 4 ifeq ($(KATEX_DIST),skip) 5 6 dist: 7 8 else 9 10 dist: build 11 rm -rf dist/ 12 cp -R build/katex/ dist/ 13 14 endif 15 16 NODE := node # pass NODE=nodejs on Debian without package nodejs-legacy 17 NODECHK := $(shell $(NODE) ./check-node-version.js) 18 ifneq ($(NODECHK),OK) 19 $(error "Node not found or wrong version") 20 endif 21 22 # Export these variables for use in contrib Makefiles 23 export BUILDDIR = $(realpath build) 24 export BROWSERIFY = $(realpath ./node_modules/.bin/browserify) 25 export UGLIFYJS = $(realpath ./node_modules/.bin/uglifyjs) \ 26 --mangle \ 27 --beautify \ 28 ascii_only=true,beautify=false 29 30 # The prepublish script in package.json will override the following variable, 31 # setting it to the empty string and thereby avoiding an infinite recursion 32 NIS = .npm-install.stamp 33 34 $(NIS) setup: package.json 35 KATEX_DIST=skip npm install # dependencies only, don't build 36 @touch $(NIS) 37 38 lint: $(NIS) katex.js server.js cli.js $(wildcard src/*.js) $(wildcard test/*.js) $(wildcard contrib/*/*.js) $(wildcard dockers/*/*.js) 39 ./node_modules/.bin/eslint $(filter-out %.stamp,$^) 40 41 build/katex.js: katex.js $(wildcard src/*.js) $(NIS) 42 $(BROWSERIFY) -t [ babelify ] $< --standalone katex > $@ 43 44 build/katex.min.js: build/katex.js 45 $(UGLIFYJS) < $< > $@ 46 47 build/katex.css: static/katex.less $(wildcard static/*.less) $(NIS) 48 ./node_modules/.bin/lessc $< $@ 49 50 build/katex.min.css: build/katex.css 51 ./node_modules/.bin/cleancss -o $@ $< 52 53 .PHONY: build/fonts 54 build/fonts: 55 rm -rf $@ 56 mkdir $@ 57 for font in $(shell grep "font" static/katex.less | grep -o "KaTeX_\w\+" | cut -d" " -f 2 | sort | uniq); do \ 58 cp static/fonts/$$font* $@; \ 59 done 60 61 test/screenshotter/unicode-fonts: 62 git clone https://github.com/Khan/KaTeX-test-fonts test/screenshotter/unicode-fonts 63 cd test/screenshotter/unicode-fonts && \ 64 git checkout 99fa66a2da643218754c8236b9f9151cac71ba7c && \ 65 cd ../../../ 66 67 contrib: build/contrib 68 69 .PHONY: build/contrib 70 build/contrib: 71 mkdir -p build/contrib 72 @# Since everything in build/contrib is put in the built files, make sure 73 @# there's nothing in there we don't want. 74 rm -rf build/contrib/* 75 $(MAKE) -C contrib/auto-render 76 77 .PHONY: build/katex 78 build/katex: build/katex.js build/katex.min.js build/katex.css build/katex.min.css build/fonts README.md build/contrib 79 mkdir -p build/katex 80 rm -rf build/katex/* 81 cp -r $^ build/katex 82 83 build/katex.tar.gz: build/katex 84 cd build && tar czf katex.tar.gz katex/ 85 86 build/katex.zip: build/katex 87 rm -f $@ 88 cd build && zip -rq katex.zip katex/ 89 90 zip: build/katex.tar.gz build/katex.zip 91 92 compress: build/katex.min.js build/katex.min.css 93 @JSSIZE=`gzip -c build/katex.min.js | wc -c`; \ 94 CSSSIZE=`gzip -c build/katex.min.css | wc -c`; \ 95 TOTAL=`echo $${JSSIZE}+$${CSSSIZE} | bc`; \ 96 printf "Minified, gzipped js: %6d\n" "$${JSSIZE}"; \ 97 printf "Minified, gzipped css: %6d\n" "$${CSSSIZE}"; \ 98 printf "Total: %6d\n" "$${TOTAL}" 99 100 serve: $(NIS) 101 $(NODE) server.js 102 103 test: $(NIS) 104 JASMINE_CONFIG_PATH=test/jasmine.json node_modules/.bin/jasmine 105 106 PERL=perl 107 PYTHON=$(shell python2 --version >/dev/null 2>&1 && echo python2 || echo python) 108 109 metrics: 110 cd metrics && $(PERL) ./mapping.pl | $(PYTHON) ./extract_tfms.py | $(PYTHON) ./extract_ttfs.py | $(PYTHON) ./format_json.py > ../src/fontMetricsData.js 111 112 extended_metrics: 113 cd metrics && $(PERL) ./mapping.pl | $(PYTHON) ./extract_tfms.py | $(PYTHON) ./extract_ttfs.py | $(PYTHON) ./format_json.py --width > ../src/fontMetricsData.js 114 115 clean: 116 rm -rf build/* $(NIS) 117 118 screenshots: test/screenshotter/unicode-fonts $(NIS) 119 dockers/Screenshotter/screenshotter.sh