diff --git a/build.py b/build.py index ed7b7a4b14..dd012dceb4 100755 --- a/build.py +++ b/build.py @@ -146,6 +146,7 @@ SRC = [path if path.endswith('.js') if path not in SHADER_SRC] +NPM_INSTALL = 'build/npm-install-timestamp' def report_sizes(t): stringio = StringIO() @@ -176,18 +177,25 @@ virtual('check', 'lint', 'build/ol.js', 'test') virtual('todo', 'fixme') -@target('build/ol.css', 'css/ol.css') +@target(NPM_INSTALL, 'package.json') +def npm_install(t): + t.run('npm', 'install') + t.touch() + + +@target('build/ol.css', 'css/ol.css', NPM_INSTALL) def build_ol_css(t): t.output('%(CLEANCSS)s', 'css/ol.css') -@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json') +@target('build/ol.js', SRC, SHADER_SRC, 'config/ol.json', NPM_INSTALL) def build_ol_new_js(t): t.run('node', 'tasks/build.js', 'config/ol.json', 'build/ol.js') report_sizes(t) -@target('build/ol-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json') +@target('build/ol-debug.js', SRC, SHADER_SRC, 'config/ol-debug.json', + NPM_INSTALL) def build_ol_debug_js(t): t.run('node', 'tasks/build.js', 'config/ol-debug.json', 'build/ol-debug.js') report_sizes(t) @@ -236,7 +244,7 @@ def examples_examples_list_js(t): @target('build/examples/all.combined.js', 'build/examples/all.js', - SRC, SHADER_SRC, 'config/examples-all.json') + SRC, SHADER_SRC, 'config/examples-all.json', NPM_INSTALL) def build_examples_all_combined_js(t): t.run('node', 'tasks/build.js', 'config/examples-all.json', 'build/examples/all.combined.js') @@ -344,7 +352,8 @@ def examples_star_json(name, match): }) with open(t.name, 'wb') as f: f.write(content) - return Target(name, action=action, dependencies=[__file__]) + return Target(name, action=action, + dependencies=[__file__, NPM_INSTALL]) @rule(r'\Abuild/examples/(?P.*).combined.js\Z') @@ -355,11 +364,12 @@ def examples_star_combined_js(name, match): report_sizes(t) dependencies = [SRC, SHADER_SRC, 'examples/%(id)s.js' % match.groupdict(), - 'build/examples/%(id)s.json' % match.groupdict()] + 'build/examples/%(id)s.json' % match.groupdict(), + NPM_INSTALL] return Target(name, action=action, dependencies=dependencies) -@target('serve', 'examples') +@target('serve', 'examples', NPM_INSTALL) def serve(t): t.run('node', 'tasks/serve.js') @@ -377,11 +387,10 @@ def build_lint_src_timestamp(t): t.newer(t.dependencies)) t.touch() - virtual('jshint', 'build/jshint-timestamp') @target('build/jshint-timestamp', SRC, EXAMPLES_SRC, SPEC, TASKS, - precious=True) + NPM_INSTALL, precious=True) def build_jshint_timestamp(t): t.run(variables.JSHINT, '--verbose', t.newer(t.dependencies)) t.touch() @@ -587,7 +596,8 @@ virtual('apidoc', 'build/jsdoc-%(BRANCH)s-timestamp' % vars(variables)) @target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), 'host-resources', - SRC, SHADER_SRC, ifind('config/jsdoc/api/template')) + SRC, SHADER_SRC, ifind('config/jsdoc/api/template'), + NPM_INSTALL) def jsdoc_BRANCH_timestamp(t): t.run('%(JSDOC)s', 'config/jsdoc/api/index.md', '-c', 'config/jsdoc/api/conf.json', @@ -684,7 +694,7 @@ def check_examples(t): sys.exit(1) -@target('test', phony=True) +@target('test', NPM_INSTALL, phony=True) def test(t): t.run('node', 'tasks/test.js')