diff --git a/pre_commit/languages/node.py b/pre_commit/languages/node.py index 304fdcdd8..f1c5eb8ff 100644 --- a/pre_commit/languages/node.py +++ b/pre_commit/languages/node.py @@ -99,5 +99,8 @@ def install_environment( cmd_output_b(*cmd) with in_env(prefix, version): - install = ('npm', 'install', '--allow-git=root', '-g', *pkgs) + install = ( + 'npm', 'install', '--allow-git=root', '--install-links=true', + '-g', *pkgs, + ) lang_base.setup_cmd(prefix, install) diff --git a/tests/languages/node_test.py b/tests/languages/node_test.py index 0fb84a916..65036e570 100644 --- a/tests/languages/node_test.py +++ b/tests/languages/node_test.py @@ -103,12 +103,16 @@ def test_installs_without_links_outside_env(tmpdir): '#!/usr/bin/env node\n' '_ = require("lodash"); console.log("success!")\n', ) + tmpdir.join('packages/bar/package.json').ensure().write( + json.dumps({'name': 'bar', 'version': '0.0.1'}), + ) tmpdir.join('package.json').write( json.dumps({ 'name': 'foo', 'version': '0.0.1', 'bin': {'foo': './bin/main.js'}, 'dependencies': {'lodash': '*'}, + 'workspaces': ['packages/*'], }), ) _make_repo(str(tmpdir))