Spec-Zone.ru › Homebrew

Модуль: 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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • ignore_scripts (Boolean) (по умолчанию: true)

Возвращает:

  • (Array<String>)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • ignore_scripts (Boolean) (по умолчанию: true)

Возвращает:

  • (Array<String>)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • libexec (Pathname)
  • ignore_scripts (Boolean) (по умолчанию: true)

Возвращает:

  • (Array<String>)


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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API