Skip installing optional npm deps, but manually install Closure Compiler native package (#636)
Follow on to #625, #630, #632, #633 Fixes emscripten-core/emscripten#12406
This commit is contained in:
30
emsdk.py
30
emsdk.py
@@ -1223,13 +1223,41 @@ def emscripten_npm_install(tool, directory):
|
|||||||
print('Running post-install step: npm ci ...')
|
print('Running post-install step: npm ci ...')
|
||||||
try:
|
try:
|
||||||
subprocess.check_output(
|
subprocess.check_output(
|
||||||
[npm, 'ci', '--production'],
|
[npm, 'ci', '--production', '--no-optional'],
|
||||||
cwd=directory, stderr=subprocess.STDOUT, env=env,
|
cwd=directory, stderr=subprocess.STDOUT, env=env,
|
||||||
universal_newlines=True)
|
universal_newlines=True)
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print('Error running %s:\n%s' % (e.cmd, e.output))
|
print('Error running %s:\n%s' % (e.cmd, e.output))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Manually install the appropriate native Closure Compiler package
|
||||||
|
# This is currently needed because npm ci will install the packages
|
||||||
|
# for Closure for all platforms, adding 180MB to the download size
|
||||||
|
# There are two problems here:
|
||||||
|
# 1. npm ci does not consider the platform of optional dependencies
|
||||||
|
# https://github.com/npm/cli/issues/558
|
||||||
|
# 2. A bug with the native compiler has bloated the packages from
|
||||||
|
# 30MB to almost 300MB
|
||||||
|
# https://github.com/google/closure-compiler-npm/issues/186
|
||||||
|
# If either of these bugs are fixed then we can remove this exception
|
||||||
|
closure_compiler_native = ''
|
||||||
|
if LINUX and ARCH in ('x86', 'x86_64'):
|
||||||
|
closure_compiler_native = 'google-closure-compiler-linux'
|
||||||
|
if MACOS and ARCH in ('x86', 'x86_64'):
|
||||||
|
closure_compiler_native = 'google-closure-compiler-osx'
|
||||||
|
if WINDOWS and ARCH == 'x86_64':
|
||||||
|
closure_compiler_native = 'google-closure-compiler-windows'
|
||||||
|
if closure_compiler_native:
|
||||||
|
print('Running post-install step: npm install', closure_compiler_native)
|
||||||
|
try:
|
||||||
|
subprocess.check_output(
|
||||||
|
[npm, 'install', closure_compiler_native],
|
||||||
|
cwd=directory, stderr=subprocess.STDOUT, env=env,
|
||||||
|
universal_newlines=True)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print('Error running %s:\n%s' % (e.cmd, e.output))
|
||||||
|
return False
|
||||||
|
|
||||||
print('Done running: npm ci')
|
print('Done running: npm ci')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user