Module: Language::Node
- Extended by:
- Utils::Output::Mixin
- Defined in:
- language/node.rb
Overview
Helper functions for Node formulae.
Defined Under Namespace
Modules: Shebang
Class Method Summary collapse
- .local_npm_install_args ⇒ Array<String> private
- .npm_cache_config ⇒ String private
- .pack_for_installation ⇒ String private
- .setup_npm_environment ⇒ void private
- .std_npm_install_args(libexec) ⇒ Array<String> private
Methods included from Utils::Output::Mixin
odebug, odeprecated, odie, odisabled, ofail, oh1, oh1_title, ohai, ohai_title, onoe, opoo, opoo_outside_github_actions, pretty_duration, pretty_installed, pretty_outdated, pretty_uninstalled
Class Method Details
.local_npm_install_args ⇒ Array<String>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
84 85 86 87 88 89 90 91 92 |
# File 'language/node.rb', line 84 def self.local_npm_install_args setup_npm_environment # npm install args for local style module format %W[ -ddd --build-from-source --#{npm_cache_config} ] end |
.npm_cache_config ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
14 15 16 |
# File 'language/node.rb', line 14 def self.npm_cache_config "cache=#{HOMEBREW_CACHE}/npm_cache" end |
.pack_for_installation ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'language/node.rb', line 19 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. package = Pathname("package.json") if package.exist? begin pkg_json = JSON.parse(package.read) rescue JSON::ParserError opoo "Could not parse package.json!" raise end prepare_removed = pkg_json["scripts"]&.delete("prepare") prepack_removed = pkg_json["scripts"]&.delete("prepack") postpack_removed = pkg_json["scripts"]&.delete("postpack") package.atomic_write(JSON.pretty_generate(pkg_json)) if prepare_removed || prepack_removed || postpack_removed end output = Utils.popen_read("npm", "pack", "--ignore-scripts") raise "npm failed to pack #{Dir.pwd}" if !$CHILD_STATUS.exitstatus.zero? || output.lines.empty? output.lines.last.chomp end |
.setup_npm_environment ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'language/node.rb', line 45 def self.setup_npm_environment # guard that this is only run once return if @env_set @env_set = T.let(true, T.nilable(T::Boolean)) # explicitly use our npm and node-gyp executables instead of the user # managed ones in HOMEBREW_PREFIX/lib/node_modules which might be broken begin ENV.prepend_path "PATH", Formula["node"].opt_libexec/"bin" rescue FormulaUnavailableError nil end end |
.std_npm_install_args(libexec) ⇒ Array<String>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'language/node.rb', line 60 def self.std_npm_install_args(libexec) setup_npm_environment pack = pack_for_installation # npm 7 requires that these dirs exist before install (libexec/"lib").mkpath # npm install args for global style module format installed into libexec args = %W[ -ddd --global --build-from-source --#{npm_cache_config} --prefix=#{libexec} #{Dir.pwd}/#{pack} ] args << "--unsafe-perm" if Process.uid.zero? args end |