www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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