diff --git a/.arclint b/.arclint index 153cbe3a..d6df3c75 100644 --- a/.arclint +++ b/.arclint @@ -2,7 +2,7 @@ "linters": { "katex-linter": { "type": "script-and-regex", - "script-and-regex.script": "make lint || true", + "script-and-regex.script": "npm run test:lint || true", "script-and-regex.regex": "/^(?P\\S+): line (?P\\d+), col \\d+, (?P.*)$/m" } } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 12cdf585..9b7e3f1f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -74,7 +74,7 @@ by running `npm install webpack-dev-server@2.7.1`. The JavaScript parser and some of the HTML and MathML tree builders are tested with Jest. These tests can be run using node with -`npm run jest`. If you need to debug the tests see +`npm run test:jest`. If you need to debug the tests see [https://facebook.github.io/jest/docs/troubleshooting.html](https://facebook.github.io/jest/docs/troubleshooting.html) The interactive editor can also be used for debugging tests in the browser by diff --git a/Makefile b/Makefile deleted file mode 100644 index e0ca82b1..00000000 --- a/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -.PHONY: build dist lint setup webpack serve clean metrics test coverage zip flow -build: test build/katex zip compress - -ifeq ($(KATEX_DIST),skip) - -dist: - -else - -dist: build - rm -rf dist/ - cp -R build/katex/ dist/ - -endif - -NODE := node # pass NODE=nodejs on Debian without package nodejs-legacy -NPM := npm -NODECHK := $(shell $(NODE) ./check-node-version.js) -ifneq ($(NODECHK),OK) -$(error "Node not found or wrong version") -endif - -# The prepublish script in package.json will override the following variable, -# setting it to the empty string and thereby avoiding an infinite recursion -NIS = .npm-install.stamp - -$(NIS) setup: package.json - KATEX_DIST=skip npm install # dependencies only, don't build - @touch $(NIS) - -lint: $(NIS) - $(NPM) run lint - -webpack: katex.js $(wildcard src/*.js) src/katex.less submodules/katex-fonts/fonts.less $(NIS) - $(NPM) run build - -.PHONY: build/fonts build/contrib -build/katex.js build/katex.min.js build/katex.css build/katex.min.css build/katex.css build/fonts build/contrib: webpack - -test/screenshotter/unicode-fonts: - git clone https://github.com/Khan/KaTeX-test-fonts test/screenshotter/unicode-fonts - cd test/screenshotter/unicode-fonts && \ - git checkout 99fa66a2da643218754c8236b9f9151cac71ba7c && \ - cd ../../../ - -.PHONY: build/katex -build/katex: build/katex.js build/katex.min.js build/katex.css build/katex.min.css build/fonts README.md build/contrib - mkdir -p build/katex - rm -rf build/katex/* - cp -r $^ build/katex - -build/katex.tar.gz: build/katex - cd build && tar czf katex.tar.gz katex/ - -build/katex.zip: build/katex - rm -f $@ - cd build && zip -rq katex.zip katex/ - -zip: build/katex.tar.gz build/katex.zip - -compress: build/katex.min.js build/katex.min.css - @JSSIZE=`gzip -c build/katex.min.js | wc -c`; \ - CSSSIZE=`gzip -c build/katex.min.css | wc -c`; \ - TOTAL=`echo $${JSSIZE}+$${CSSSIZE} | bc`; \ - printf "Minified, gzipped js: %6d\n" "$${JSSIZE}"; \ - printf "Minified, gzipped css: %6d\n" "$${CSSSIZE}"; \ - printf "Total: %6d\n" "$${TOTAL}" - -serve: $(NIS) - $(NPM) start - -flow: $(NIS) - $(NPM) run flow - -test: $(NIS) - $(NPM) test - -coverage: $(NIS) - $(NPM) run coverage - -PERL=perl -PYTHON=$(shell python2 --version >/dev/null 2>&1 && echo python2 || echo python) - -metrics: - cd metrics && $(PERL) ./mapping.pl | $(PYTHON) ./extract_tfms.py | $(PYTHON) ./extract_ttfs.py | $(PYTHON) ./format_json.py --width > ../src/fontMetricsData.js - -unicode: - cd src && $(NODE) unicodeMake.js >unicodeSymbols.js -src/unicodeSymbols.js: unicode - -clean: - rm -rf build/* $(NIS) - -screenshots: test/screenshotter/unicode-fonts $(NIS) - dockers/Screenshotter/screenshotter.sh diff --git a/package.json b/package.json index 07f30336..82a4a514 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "jspngopt": "^0.2.0", "less": "~2.7.1", "less-loader": "^4.0.5", + "mkdirp": "^0.5.1", "nomnom": "^1.8.1", "object-assign": "^4.1.0", "pako": "1.0.4", @@ -55,23 +56,28 @@ }, "bin": "cli.js", "scripts": { - "lint": "eslint katex.js katex.webpack.js cli.js webpack.common.js webpack.config.js webpack.dev.js src static test contrib dockers && stylelint src/katex.less", - "flow": "flow", - "jest": "jest", + "test": "npm run prestart && npm run test:lint && npm run test:flow && npm run test:jest", + "test:lint": "eslint katex.js katex.webpack.js cli.js webpack.common.js webpack.config.js webpack.dev.js src static test contrib dockers && stylelint src/katex.less", + "test:flow": "flow", + "test:jest": "jest", "jest-update": "jest --updateSnapshot", "coverage": "jest --coverage", "clean": "rm -rf build/* node_modules/", "clean-install": "npm run clean && npm i", - "test": "check-dependencies && npm run lint && npm run flow && npm run jest", - "verify-screenshots": "check-dependencies && dockers/Screenshotter/screenshotter.sh --verify", - "start": "check-dependencies && webpack-dev-server --hot --config webpack.dev.js", - "build": "check-dependencies && rimraf build/* && webpack", + "screenshots": "npm run prestart && dockers/Screenshotter/screenshotter.sh", + "verify-screenshots": "npm run screenshots -- --verify", + "prestart": "node check-node-version.js && check-dependencies && cd src && node unicodeMake.js >unicodeSymbols.js", + "start": "webpack-dev-server --hot --config webpack.dev.js", + "build": "npm run prestart && rimraf build/* && webpack", + "dist": "npm test && npm run build && npm run dist:copy && npm run dist:zip && npm run dist:dist", + "dist:copy": "cd build && mkdirp katex && cp -r katex.js katex.min.js katex.css katex.min.css contrib fonts ../README.md katex", + "dist:zip": "cd build && tar czf katex.tar.gz katex/ && zip -rq katex.zip katex/", + "dist:dist": "rimraf dist/ && cp -r build/katex/ dist/", "watch": "npm run build -- --watch", - "perf-test": "check-dependencies && NODE_ENV=test node test/perf-test.js", - "prepublishOnly": "make NIS= dist" + "perf-test": "npm run prestart && NODE_ENV=test node test/perf-test.js" }, "pre-commit": [ - "lint" + "test:lint" ], "dependencies": { "match-at": "^0.1.1" diff --git a/release.sh b/release.sh index 44c23899..2026a2ca 100755 --- a/release.sh +++ b/release.sh @@ -104,7 +104,7 @@ git checkout --detach # Build generated files and add them to the repository (for bower) git clean -fdx build dist -make setup dist +npm run dist sed -i.bak -E '/^\/dist\/$/d' .gitignore rm -f .gitignore.bak git add .gitignore dist/ diff --git a/src/unicodeMake.js b/src/unicodeMake.js index f6833ba5..68e2a892 100644 --- a/src/unicodeMake.js +++ b/src/unicodeMake.js @@ -4,10 +4,6 @@ // whose purpose is to generate unicodeSymbols.js in this directory. // In this way, only this tool, and not the distribution/browser, // needs String's normalize function. -// -// This tool should be run (via `node unicodeMake.js` or `make unicode`) -// whenever KaTeX adds support for new accents, and whenever -// the Unicode spec adds new symbols that should be supported. const accents = require('./unicodeAccents');