aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/language/node.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/language/node.rb')
-rw-r--r--Library/Homebrew/language/node.rb23
1 files changed, 21 insertions, 2 deletions
diff --git a/Library/Homebrew/language/node.rb b/Library/Homebrew/language/node.rb
index ab2206a5b..b9abaea54 100644
--- a/Library/Homebrew/language/node.rb
+++ b/Library/Homebrew/language/node.rb
@@ -4,6 +4,17 @@ module Language
"cache=#{HOMEBREW_CACHE}/npm_cache\n"
end
+ def self.pack_for_installation
+ # Homebrew assumes the buildpath/testpath will always be disposable
+ # and from npm 5.0.0 the logic changed so that when a directory is
+ # fed to `npm install` only symlinks are created linking back to that
+ # directory, consequently breaking that assumption. We require a tarball
+ # because npm install creates a "real" installation when fed a tarball.
+ output = Utils.popen_read("npm pack").chomp
+ raise "npm failed to pack #{Dir.pwd}" unless $?.exitstatus.zero?
+ output
+ end
+
def self.setup_npm_environment
npmrc = Pathname.new("#{ENV["HOME"]}/.npmrc")
# only run setup_npm_environment once per formula
@@ -14,7 +25,7 @@ module Language
npmrc.write npm_cache_config
# explicitly use our npm and node-gyp executables instead of the user
# managed ones in HOMEBREW_PREFIX/lib/node_modules which might be broken
- ENV.prepend_path "PATH", Formula["node"].opt_libexec/"npm/bin"
+ ENV.prepend_path "PATH", Formula["node"].opt_libexec/"bin"
end
def self.std_npm_install_args(libexec)
@@ -22,8 +33,16 @@ module Language
# tell npm to not install .brew_home by adding it to the .npmignore file
# (or creating a new one if no .npmignore file already exists)
open(".npmignore", "a") { |f| f.write("\n.brew_home\n") }
+
+ pack = pack_for_installation
+
# npm install args for global style module format installed into libexec
- ["--verbose", "--global", "--prefix=#{libexec}", "."]
+ %W[
+ --verbose
+ --global
+ --prefix=#{libexec}
+ #{Dir.pwd}/#{pack}
+ ]
end
def self.local_npm_install_args