mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-10 05:28:41 +00:00
Use webpack to build files and webpack-dev-server for testing (#1068)
* Create a separate entry point for webpack
Created a webpack entry point for KaTeX, which imports katex.less. As
flow[1] and jest[2] doesn't support CSS modules natively, a separate
entry point is used and it is not flowtyped.
[1] https://gist.github.com/lambdahands/d19e0da96285b749f0ef
[2] https://facebook.github.io/jest/docs/en/webpack.html
* Use webpack to build files
* Made webpack.config.js export valid webpack configuration
* Use:
browserify -> webpack
babelify -> babel-loader
UglifyJS CLI -> UglifyJsPlugin
Less CLI -> less-loader
cleancss -> cssnano in css-loader
build/fonts -> file-loader
* Inline CSS(Less) using style-loader and export them using
ExtractTextPlugin
* Add `watch` npm script calling `webpack --watch`
* Improve local testing(webpack-dev-server)
* Made webpackDevServer export a valid webpack configuration
* Compile Less and inline CSS using less-loader and style-loader
* Instead of copying files serve files from /static and use file-loader
* Remove old server.js and its dependencies
* Use webpack-dev-server in Screenshotter
* Include contrib in webpack-dev-server
+ Moved common configurations to webpack.common.js
* Rename webpackDevServer.js to webpack.dev...
to be consistent, avoid confusion with webpack-dev-server and follow
webpack configuration naming convention.
* Remove unnecessary conditional output.path
* Use map instead of reduce
+ Add comments regarding function arguments
* Remove unnecessary mkdir and clean build/* before build
* Use katex as external dependency instead of global variable in contrib
Fixes #692.
* Unblock codes as they are built as a module
* Update package-lock.json
* Add comments regarding devServer option
* Lint renamed webpack.dev.js
a0d8b33
* Export ES6 module and expose its default export
* Revert "Browserify hotfix (#1057)"
This reverts commit f6b509123b
.
* Enables colors on the console when running the dev server in Screenshotter
* Add context to webpack configuration
Allows webpack to be run from other directories
* Move `rm -rf build/*` to npm scripts
* Check dependencies before build
* Move UglifyJsPlugin into config creation
* Let webpack handle ES6 modules
Do not transform modules to commonjs in Babel. However Jest doesn't not
support ES6 modules, so transfrom modules to commonjs when NODE_ENV is
`test`.
* Add documentation on testing in IE 9 and 10 using webpack-dev-server
Changed version range to include IE-compatible version
This commit is contained in:
committed by
Kevin Barabash
parent
4a11c3166d
commit
5f32b71c85
51
Makefile
51
Makefile
@@ -1,5 +1,5 @@
|
||||
.PHONY: build dist lint setup copy serve clean metrics test coverage zip contrib flow
|
||||
build: test build/katex.min.js build/katex.min.css contrib zip compress
|
||||
.PHONY: build dist lint setup webpack serve clean metrics test coverage zip flow
|
||||
build: test build/katex zip compress
|
||||
|
||||
ifeq ($(KATEX_DIST),skip)
|
||||
|
||||
@@ -20,15 +20,6 @@ ifneq ($(NODECHK),OK)
|
||||
$(error "Node not found or wrong version")
|
||||
endif
|
||||
|
||||
# Export these variables for use in contrib Makefiles
|
||||
export BUILDDIR = $(realpath build)
|
||||
export BROWSERIFY = $(realpath ./node_modules/.bin/browserify)
|
||||
export UGLIFYJS = $(realpath ./node_modules/.bin/uglifyjs) \
|
||||
--mangle \
|
||||
--beautify \
|
||||
ascii_only=true,beautify=false
|
||||
export CLEANCSS = $(realpath ./node_modules/.bin/cleancss)
|
||||
|
||||
# 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
|
||||
@@ -40,29 +31,11 @@ $(NIS) setup: package.json
|
||||
lint: $(NIS)
|
||||
$(NPM) run lint
|
||||
|
||||
build/katex.js: katex.js $(wildcard src/*.js) $(NIS)
|
||||
mkdir -p build
|
||||
$(BROWSERIFY) -t [ babelify ] $< --standalone katex > $@
|
||||
webpack: katex.js $(wildcard src/*.js) $(wildcard static/*.less) $(NIS)
|
||||
$(NPM) run build
|
||||
|
||||
build/katex.min.js: build/katex.js
|
||||
mkdir -p build
|
||||
$(UGLIFYJS) < $< > $@
|
||||
|
||||
build/katex.css: static/katex.less $(wildcard static/*.less) $(NIS)
|
||||
mkdir -p build
|
||||
./node_modules/.bin/lessc $< $@
|
||||
|
||||
build/katex.min.css: build/katex.css
|
||||
mkdir -p build
|
||||
$(CLEANCSS) -o $@ $<
|
||||
|
||||
.PHONY: build/fonts
|
||||
build/fonts:
|
||||
rm -rf $@
|
||||
mkdir $@
|
||||
for font in $(shell grep "font" static/katex.less | grep -o "KaTeX_\w\+" | cut -d" " -f 2 | sort | uniq); do \
|
||||
cp submodules/katex-fonts/fonts/$$font* $@; \
|
||||
done
|
||||
.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
|
||||
@@ -70,18 +43,6 @@ test/screenshotter/unicode-fonts:
|
||||
git checkout 99fa66a2da643218754c8236b9f9151cac71ba7c && \
|
||||
cd ../../../
|
||||
|
||||
contrib: build/contrib
|
||||
|
||||
.PHONY: build/contrib
|
||||
build/contrib:
|
||||
mkdir -p build/contrib
|
||||
@# Since everything in build/contrib is put in the built files, make sure
|
||||
@# there's nothing in there we don't want.
|
||||
rm -rf build/contrib/*
|
||||
$(MAKE) -C contrib/auto-render
|
||||
$(MAKE) -C contrib/copy-tex
|
||||
$(MAKE) -C contrib/mathtex-script-type
|
||||
|
||||
.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
|
||||
|
Reference in New Issue
Block a user