diff --git a/Formula/node@8.rb b/Formula/node@8.rb index acbbaf4eee..d18802baed 100644 --- a/Formula/node@8.rb +++ b/Formula/node@8.rb @@ -32,16 +32,9 @@ class NodeAT8 < Formula fails_with :gcc => n end - # Keep in sync with main node formula - resource "npm" do - url "https://registry.npmjs.org/npm/-/npm-5.6.0.tgz" - sha256 "b1f0de3767136c1d7b4b0f10e6eb2fb3397e2fe11e4c9cddcd0030ad1af9eddd" - end - def install - # Never install the bundled "npm", always prefer our - # installation from tarball for better packaging control. - args = %W[--prefix=#{prefix} --without-npm] + args = ["--prefix=#{prefix}"] + args << "--without-npm" if build.without? "npm" args << "--debug" if build.with? "debug" args << "--with-intl=system-icu" if build.with? "icu4c" args << "--shared-openssl" if build.with? "openssl" @@ -49,59 +42,6 @@ class NodeAT8 < Formula system "./configure", *args system "make", "install" - - if build.with? "npm" - # Allow npm to find Node before installation has completed. - ENV.prepend_path "PATH", bin - - bootstrap = buildpath/"npm_bootstrap" - bootstrap.install resource("npm") - system "node", bootstrap/"bin/npm-cli.js", "install", "-ddd", "--global", - "--prefix=#{libexec}", resource("npm").cached_download - - # The `package.json` stores integrity information about the above passed - # in `cached_download` npm resource, which breaks `npm -g outdated npm`. - # This copies back over the vanilla `package.json` to fix this issue. - cp bootstrap/"package.json", libexec/"lib/node_modules/npm" - # These symlinks are never used & they've caused issues in the past. - rm_rf libexec/"share" - - if build.with? "completion" - bash_completion.install \ - bootstrap/"lib/utils/completion.sh" => "npm" - end - end - end - - def post_install - return if build.without? "npm" - - node_modules = HOMEBREW_PREFIX/"lib/node_modules" - node_modules.mkpath - # Kill npm but preserve all other modules across node updates/upgrades. - rm_rf node_modules/"npm" - - cp_r libexec/"lib/node_modules/npm", node_modules - # This symlink doesn't hop into homebrew_prefix/bin automatically so - # we make our own. This is a small consequence of our - # bottle-npm-and-retain-a-private-copy-in-libexec setup - # All other installs **do** symlink to homebrew_prefix/bin correctly. - # We ln rather than cp this because doing so mimics npm's normal install. - ln_sf node_modules/"npm/bin/npm-cli.js", HOMEBREW_PREFIX/"bin/npm" - ln_sf node_modules/"npm/bin/npx-cli.js", HOMEBREW_PREFIX/"bin/npx" - - # Let's do the manpage dance. It's just a jump to the left. - # And then a step to the right, with your hand on rm_f. - %w[man1 man5 man7].each do |man| - # Dirs must exist first: https://github.com/Homebrew/legacy-homebrew/issues/35969 - mkdir_p HOMEBREW_PREFIX/"share/man/#{man}" - rm_f Dir[HOMEBREW_PREFIX/"share/man/#{man}/{npm.,npm-,npmrc.,package.json.,npx.}*"] - cp Dir[libexec/"lib/node_modules/npm/man/#{man}/{npm,package.json,npx}*"], HOMEBREW_PREFIX/"share/man/#{man}" - end - - npm_root = node_modules/"npm" - npmrc = npm_root/"npmrc" - npmrc.atomic_write("prefix = #{HOMEBREW_PREFIX}\n") end def caveats @@ -132,14 +72,14 @@ class NodeAT8 < Formula ENV.prepend_path "PATH", opt_bin ENV.delete "NVM_NODEJS_ORG_MIRROR" assert_equal which("node"), opt_bin/"node" - assert_predicate HOMEBREW_PREFIX/"bin/npm", :exist?, "npm must exist" - assert_predicate HOMEBREW_PREFIX/"bin/npm", :executable?, "npm must be executable" + assert_predicate bin/"npm", :exist?, "npm must exist" + assert_predicate bin/"npm", :executable?, "npm must be executable" npm_args = ["-ddd", "--cache=#{HOMEBREW_CACHE}/npm_cache", "--build-from-source"] - system "#{HOMEBREW_PREFIX}/bin/npm", *npm_args, "install", "npm@latest" - system "#{HOMEBREW_PREFIX}/bin/npm", *npm_args, "install", "bignum" unless head? - assert_predicate HOMEBREW_PREFIX/"bin/npx", :exist?, "npx must exist" - assert_predicate HOMEBREW_PREFIX/"bin/npx", :executable?, "npx must be executable" - assert_match "< hello >", shell_output("#{HOMEBREW_PREFIX}/bin/npx cowsay hello") + system "#{bin}/npm", *npm_args, "install", "npm@latest" + system "#{bin}/npm", *npm_args, "install", "bignum" unless head? + assert_predicate bin/"npx", :exist?, "npx must exist" + assert_predicate bin/"npx", :executable?, "npx must be executable" + assert_match "< hello >", shell_output("#{bin}/npx cowsay hello") end end end