Update static build
This commit is contained in:
parent
2abbfb49ec
commit
f005667593
1 changed files with 51 additions and 16 deletions
|
@ -1,28 +1,63 @@
|
|||
from pelican import signals
|
||||
import os
|
||||
import sh
|
||||
import subprocess
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
|
||||
NODE_PRODUCTION = os.environ.get('NODE_ENV') == 'production'
|
||||
|
||||
|
||||
def flatten_list(array):
|
||||
res = []
|
||||
for el in array:
|
||||
if isinstance(el, (list, tuple)):
|
||||
res.extend(flatten_list(el))
|
||||
continue
|
||||
res.append(el)
|
||||
return res
|
||||
|
||||
|
||||
def run_command(detail, args, use_system=False):
|
||||
logger.info(detail + '...')
|
||||
if use_system:
|
||||
exit_code = os.system(' '.join(flatten_list(args)))
|
||||
if exit_code:
|
||||
exit(exit_code)
|
||||
else:
|
||||
subprocess.run(flatten_list(args), check=True)
|
||||
|
||||
|
||||
def node_bin(exec):
|
||||
return os.path.join('node_modules', '.bin', exec)
|
||||
|
||||
|
||||
def static_build(*args, **kwargs):
|
||||
if NODE_PRODUCTION:
|
||||
print('Building Production...')
|
||||
logger.info('Building Production...')
|
||||
UGLIFY_ARGS = ['--compress', '--screw-ie8', '--define', '--stats', '--keep-fnames']
|
||||
else:
|
||||
UGLIFY_ARGS = []
|
||||
|
||||
sh.mkdir('-p', 'theme/static/build/js/lib')
|
||||
os.system('uglifyjs node_modules/bootstrap-sass/assets/javascripts/bootstrap.js --compress --screw-ie8 --define --stats --keep-fnames -o theme/static/build/js/lib/bootstrap.js')
|
||||
os.system('uglifyjs theme/static/build/js/lib/* --compress --screw-ie8 --define --stats --keep-fnames -o theme/static/build/js/libs.js')
|
||||
sh.rm('-rf', 'theme/static/build/js/lib')
|
||||
os.system('uglifyjs node_modules/jquery/dist/jquery.js --compress --screw-ie8 --define --stats --keep-fnames -o theme/static/build/js/jquery.js')
|
||||
os.system('browserify -t [ babelify --presets [ es2015 react ] ] theme/static/src/js/app.js -o theme/static/build/js/app.js')
|
||||
os.system('uglifyjs theme/static/build/js/app.js --compress --screw-ie8 --define --stats --keep-fnames -o theme/static/build/js/app.js')
|
||||
print('JS built!')
|
||||
run_command('Building Bootstrap', [node_bin('uglifyjs'), 'node_modules/bootstrap-sass/assets/javascripts/bootstrap.js', UGLIFY_ARGS , '-o', 'theme/static/build/js/bootstrap.js'])
|
||||
run_command('Building jQuery', [node_bin('uglifyjs'), 'node_modules/jquery/dist/jquery.js', UGLIFY_ARGS, '-o', 'theme/static/build/js/jquery.js'])
|
||||
run_command('Building Application', [
|
||||
node_bin('browserify'),
|
||||
'-t', '[', 'babelify', '--presets', '[', 'es2015', 'react', ']', ']',
|
||||
'theme/static/src/js/app.js',
|
||||
'-o', 'theme/static/build/js/app.js'
|
||||
])
|
||||
run_command('Compressing Application', [node_bin('uglifyjs'), 'theme/static/build/js/app.js', UGLIFY_ARGS, '-o', 'theme/static/build/js/app.js'])
|
||||
|
||||
logger.info('JS built!')
|
||||
|
||||
run_command('Building Pygments Style', ['pygmentize', '-S', 'github', '-f', 'html', '-a', '.highlight', '>', 'theme/static/src/scss/pygment.css'], True)
|
||||
run_command('Building Styles', [node_bin('node-sass'), 'theme/static/src/scss/index.scss', 'theme/static/build/css/index.css', '--source-map-embed'])
|
||||
run_command('Prefixing Styles', [node_bin('postcss'), '-u', 'autoprefixer', '-o', 'theme/static/build/css/index.css', 'theme/static/build/css/index.css'])
|
||||
run_command('Compressing Styles', [node_bin('cleancss'), '-d', '--s0', '-o', 'theme/static/build/css/index.css', 'theme/static/build/css/index.css'])
|
||||
|
||||
logger.info('SCSS Built!')
|
||||
|
||||
os.system('pygmentize -S github -f html -a .highlight > theme/static/src/scss/pygment.css')
|
||||
os.system('npm run build-scss')
|
||||
os.system('node-sass theme/static/src/scss/index.scss theme/static/build/css/index.css --source-map-embed')
|
||||
os.system('postcss -u autoprefixer -o theme/static/build/css/index.css theme/static/build/css/index.css')
|
||||
os.system('cleancss -d --s0 -o theme/static/build/css/index.css theme/static/build/css/index.css')
|
||||
print('SCSS Built!')
|
||||
|
||||
def register():
|
||||
signals.static_generator_init.connect(static_build)
|
||||
|
|
Reference in a new issue