Модуль: Language::Node
- Расширен модулем:
- Utils::Output::Mixin
- Определён в:
- language/node.rb
Обзор
Вспомогательные функции для формул Node.
Определено в пространстве имён
Модули: Shebang
Краткое описание методов класса свернуть
- .local_npm_install_args(ignore_scripts: true) ⇒ Array<String> приватный
- .npm_cache_config ⇒ String приватный
- .npm_install_security_args(ignore_scripts: true) ⇒ Array<String> приватный
- .pack_for_installation ⇒ String приватный
- .setup_npm_environment ⇒ void приватный
- .std_npm_install_args(libexec, ignore_scripts: true) ⇒ Array<String> приватный
Методы, включённые из Utils::Output::Mixin
issue_reporting_message, odebug, odeprecated, odie, odisabled, ofail, oh1, oh1_title, ohai, ohai_title, onoe, opoo, opoo_outside_github_actions, opoo_without_github_actions_annotation, pretty_deprecated, pretty_disabled, pretty_duration, pretty_install_status, pretty_installed, pretty_uninstalled, pretty_upgradable, pretty_warning
Подробное описание методов класса
.local_npm_install_args(ignore_scripts: true) ⇒ Array<String>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
100 101 102 103 104 105 106 107 108 109 | # File 'language/node.rb', line 100 def self.local_npm_install_args(ignore_scripts: true) setup_npm_environment # npm install args for local style module format # Delay packages published in the last day so builds are less likely to # install a freshly compromised npm release or dependency. %w[--loglevel=silly--build-from-source] + npm_install_security_args(ignore_scripts:) end |
.npm_cache_config ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
16 17 18 | # File 'language/node.rb', line 16 def self.npm_cache_config "cache=#{HOMEBREW_CACHE}/npm_cache" end |
.npm_install_security_args(ignore_scripts: true) ⇒ Array<String>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
21 22 23 24 25 26 27 28 29 30 | # File 'language/node.rb', line 21 def self.npm_install_security_args(ignore_scripts: true) args = %W[--min-release-age=#{Homebrew::RELEASE_COOLDOWN_DAYS}--#{npm_cache_config}] args << "--ignore-scripts" if ignore_scripts args end |
.pack_for_installation ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # File 'language/node.rb', line 33 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.fetch(-1).chomp end |
.setup_npm_environment ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
59 60 61 62 63 64 65 66 67 68 69 70 71 | # File 'language/node.rb', line 59 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, ignore_scripts: true) ⇒ Array<String>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | # File 'language/node.rb', line 74 def self.std_npm_install_args(libexec, ignore_scripts: true) 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 # Delay packages published in the last day so builds are less likely to # install a freshly compromised npm release or dependency. args = %w[--loglevel=silly--global--build-from-source] + npm_install_security_args(ignore_scripts:) + %W[--prefix=#{libexec}#{Dir.pwd}/#{pack}] args << "--unsafe-perm" if Process.uid.zero? args end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Language/Node.html