Module: Language::Node
- 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
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.
80 81 82 83 84 85 86 87 88 |
# File 'language/node.rb', line 80 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.
10 11 12 |
# File 'language/node.rb', line 10 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.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'language/node.rb', line 15 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.
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'language/node.rb', line 41 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.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'language/node.rb', line 56 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 |