blob: 87d004f78d464d3d79955ed341923fd185ee7a27 [file] [log] [blame]
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Minifies Polymer 2, since it does not come already minified from bower
(unlike Polymer 1).
"""
import os
import sys
import shutil
import tempfile
_HERE_PATH = os.path.dirname(__file__)
_SRC_PATH = os.path.normpath(os.path.join(_HERE_PATH, '..', '..', '..'))
sys.path.append(os.path.join(_SRC_PATH, 'third_party', 'node'))
import node
import node_modules
sys.path.append(_HERE_PATH)
import extract_inline_scripts
def main():
polymer_dir = os.path.join(_HERE_PATH, 'components-chromium', 'polymer2')
# Final HTML bundle.
polymer_html = os.path.join(polymer_dir, 'polymer.html')
# Final JS bundle.
polymer_js = os.path.join(polymer_dir, 'polymer-extracted.js')
# Move the entire checkout to a temp location.
tmp_dir = os.path.join(_HERE_PATH, 'components-chromium', 'polymer2temp')
if os.path.exists(tmp_dir):
shutil.rmtree(tmp_dir)
shutil.move(polymer_dir, tmp_dir)
tmp_out_dir = os.path.join(tmp_dir, 'out')
os.makedirs(tmp_out_dir)
try:
# Combine everything to a single HTML bundle file.
node.RunNode([
node_modules.PathToBundler(),
'--strip-comments',
'--inline-scripts',
'--inline-css',
'--in-html', os.path.join(tmp_dir, 'polymer.html'),
'--out-html', os.path.join(tmp_out_dir, 'polymer.html')
])
# Extract the JS to a separate file named polymer-extracted.js.
extract_inline_scripts.ExtractFrom(
os.path.join(tmp_out_dir, 'polymer.html'))
# Minify the JS bundle.
extracted_js = os.path.join(tmp_out_dir, 'polymer-extracted.js')
node.RunNode([
node_modules.PathToUglify(), extracted_js,
'--comments', '"/Copyright|license|LICENSE/"',
'--output', extracted_js])
# Copy generated bundled JS/HTML files back to the original location.
os.makedirs(polymer_dir)
shutil.move(os.path.join(tmp_out_dir, 'polymer.html'), polymer_html)
shutil.move(extracted_js, polymer_js)
# Copy a few more files.
shutil.move(os.path.join(tmp_dir, 'bower.json'), polymer_dir)
shutil.move(os.path.join(tmp_dir, 'LICENSE.txt'), polymer_dir)
finally:
# Delete component-chromium/shadycss since it ends up in the bundle.
shutil.rmtree(os.path.join(_HERE_PATH, 'components-chromium', 'shadycss'))
shutil.rmtree(tmp_dir)
if __name__ == '__main__':
main()