language/node: adjustments for npm 5.0.x

Goes with: https://github.com/Homebrew/homebrew-core/pull/14085
This commit is contained in:
Dominyk Tiller 2017-05-31 04:57:28 +01:00
parent 8b26deef20
commit b6d81359f0
No known key found for this signature in database
GPG Key ID: FE19AEFCF658C6F6

View File

@ -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