From 13c09e6be58332ffcad5ae6889d9038027d182a2 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Fri, 12 Jul 2019 13:38:17 -0700 Subject: [PATCH] fix(builtin): include package.json files in browserify inputs Required for packages like nise --- internal/npm_install/npm_umd_bundle.bzl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/internal/npm_install/npm_umd_bundle.bzl b/internal/npm_install/npm_umd_bundle.bzl index b44788d017..446818fd3b 100644 --- a/internal/npm_install/npm_umd_bundle.bzl +++ b/internal/npm_install/npm_umd_bundle.bzl @@ -34,8 +34,13 @@ def _npm_umd_bundle(ctx): sources = ctx.attr.package[NodeModuleSources].sources.to_list() - # Only pass .js files as inputs to browserify - inputs = [f for f in sources if f.path.endswith(".js")] + # Only pass .js and package.json files as inputs to browserify. + # The latter is required for module resolution in some cases. + inputs = [ + f + for f in sources + if f.path.endswith(".js") or f.basename == "package.json" + ] ctx.actions.run( progress_message = "Generated UMD bundle for %s npm package [browserify]" % ctx.attr.package_name, @@ -43,6 +48,12 @@ def _npm_umd_bundle(ctx): inputs = inputs, outputs = [output], arguments = [args], + # browserify may load files from nodejs but these aren't declared as action inputs + # looks like: + # ERROR: /workdir/internal/npm_install/test/BUILD.bazel:50:1: Couldn't build file internal/npm_install/test/sinon.umd.js: Generated UMD bundle for sinon npm package [browserify] failed (Exit 1) + # Error: Cannot find module 'process/browser.js' from '/b/f/w/bazel-out/host/bin/external/build_bazel_rules_nodejs/internal/npm_install/browserify-wrapped.runfiles/build_bazel_rules_nodejs/third_party/github.com/browserify/browserify + # TODO(alexeagle): remove this line and make the tests work with RBE + execution_requirements = {"local": "1"}, ) return [