62 lines
1.7 KiB
Makefile
62 lines
1.7 KiB
Makefile
JSX = ./node_modules/react-tools/bin/jsx
|
|
UGLIFY = ./node_modules/uglify-js/bin/uglifyjs
|
|
CLEANCSS = ./node_modules/clean-css/bin/cleancss
|
|
|
|
cloc:
|
|
cloc . --exclude-dir=node_modules,app/bower_components,app/jsx/build/.module_cache
|
|
|
|
dist:
|
|
# Compiling JSX
|
|
mkdir -p build
|
|
rm -rf app/jsx/build
|
|
$(JSX) --extension jsx app/jsx app/jsx/build
|
|
|
|
# Compressing JS
|
|
#
|
|
# Get all script tags
|
|
# Ignore Bower deps, include minified versions later
|
|
# Splitting string by " and taking second field (URI)
|
|
# Adding "app" prefix
|
|
# Prepending dependencies to the list
|
|
# Concatenation
|
|
# Minification
|
|
cat app/index.html \
|
|
| grep script \
|
|
| grep -v bower \
|
|
| cut -d '"' -f 2 \
|
|
| sed -e 's/^/app/' \
|
|
| ( echo app/bower_components/react/react.min.js && \
|
|
echo app/bower_components/react-router/build/global/ReactRouter.min.js && \
|
|
echo app/bower_components/lodash/lodash.min.js && \
|
|
cat ) \
|
|
| xargs cat \
|
|
| $(UGLIFY) > build/app.js
|
|
|
|
# Compressing CSS
|
|
#
|
|
# Get all style tags
|
|
# Ignore local Open Sans stylesheet
|
|
# Splitting string by " and taking fourth field (URI)
|
|
# Adding "app" prefix
|
|
# Concatenation
|
|
# Minification
|
|
cat app/index.html \
|
|
| grep stylesheet \
|
|
| grep -v opensans \
|
|
| cut -d '"' -f 4 \
|
|
| sed -e 's/^/app/' \
|
|
| xargs cat \
|
|
| $(CLEANCSS) -o build/app.css
|
|
|
|
# Replacing all link tags with a single one
|
|
# Replacing all script tags with a single one
|
|
cat app/index.html \
|
|
| perl -pe 's/<link.*>\n/STYLE_TAG/g' \
|
|
| perl -pe 's/(STYLE_TAG\s*)+/\
|
|
<link rel="stylesheet" href="\/app.css">\n \
|
|
<link rel="stylesheet" href="\/\/fonts.googleapis.com\/css?family=Open\+Sans:400,600">\n /g' \
|
|
| perl -pe 's/<script.*>\n/SCRIPT_TAG/g' \
|
|
| perl -pe 's/(SCRIPT_TAG\s*)+/\
|
|
<script type="text\/javascript" src="\/app.js"><\/script>\n/g' \
|
|
> build/index.html
|