aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/node.rb
diff options
context:
space:
mode:
authorSébastien Lavoie2012-06-26 23:38:24 -0400
committerMax Howell2012-08-27 11:22:12 -0400
commit1e70950e80f51eef6f88f6e7e7e52c13e1c718fd (patch)
treef40cdfaca590da2149ff566bc85139b9a48375e9 /Library/Formula/node.rb
parent9c4dfde8c2f5fe956908ee1043fe72833a1cf68c (diff)
downloadhomebrew-1e70950e80f51eef6f88f6e7e7e52c13e1c718fd.tar.bz2
Install npm by default
Closes #13053. Refs #13024. Adds option "--without-npm". Signed-off-by: Max Howell <mxcl@me.com> Fixed merge. Amended some user-facing texts.
Diffstat (limited to 'Library/Formula/node.rb')
-rw-r--r--Library/Formula/node.rb85
1 files changed, 75 insertions, 10 deletions
diff --git a/Library/Formula/node.rb b/Library/Formula/node.rb
index a06277467..428cc9f52 100644
--- a/Library/Formula/node.rb
+++ b/Library/Formula/node.rb
@@ -1,5 +1,37 @@
require 'formula'
+class NpmNotInstalled < Requirement
+ def modules_folder
+ "#{HOMEBREW_PREFIX}/lib/node_modules"
+ end
+
+ def message; <<-EOS.undent
+ The homebrew node recipe now (beginning with 0.8.0) comes with npm.
+ It appears you already have npm installed at #{modules_folder}/npm.
+ To use the npm that comes with this recipe,
+ first uninstall npm with `npm uninstall npm -g`.
+ Then run this command again.
+
+ If you would like to keep your installation of npm instead of
+ using the one provided with homebrew,
+ install the formula with the --without-npm option added.
+ EOS
+ end
+
+ def satisfied?
+ begin
+ path = Pathname.new("#{modules_folder}/npm")
+ not path.realpath.to_s.include?(HOMEBREW_CELLAR)
+ rescue Exception => e
+ true
+ end
+ end
+
+ def fatal?
+ true
+ end
+end
+
class Node < Formula
homepage 'http://nodejs.org/'
url 'http://nodejs.org/dist/v0.8.8/node-v0.8.8.tar.gz'
@@ -9,8 +41,10 @@ class Node < Formula
# Leopard OpenSSL is not new enough, so use our keg-only one
depends_on 'openssl' if MacOS.leopard?
+ depends_on NpmNotInstalled.new unless build.include? 'without-npm'
option 'enable-debug', 'Build with debugger hooks'
+ option 'without-npm', 'npm will not be installed'
fails_with :llvm do
build 2326
@@ -20,23 +54,54 @@ class Node < Formula
skip_clean :all
def install
- # Why skip npm install? Read https://github.com/mxcl/homebrew/pull/8784.
- args = ["--prefix=#{prefix}", "--without-npm"]
+ args = %W{--prefix=#{prefix}}
args << "--debug" if build.include? 'enable-debug'
+ args << "--without-npm" if build.include? 'without-npm'
system "./configure", *args
system "make install"
+
+ unless build.include? '--without-npm'
+ (lib/"node_modules/npm/npmrc").write(npmrc)
+ end
end
- def caveats
- <<-EOS.undent
- Homebrew has NOT installed npm. We recommend the following method of
- installation:
- curl https://npmjs.org/install.sh | sh
+ def npm_prefix
+ "#{HOMEBREW_PREFIX}/share/npm"
+ end
+
+ def npm_bin
+ "#{npm_prefix}/bin"
+ end
+
+ def modules_folder
+ "#{HOMEBREW_PREFIX}/lib/node_modules"
+ end
- After installing, add the following path to your NODE_PATH environment
- variable to have npm libraries picked up:
- #{HOMEBREW_PREFIX}/lib/node_modules
+ def npmrc
+ <<-EOS.undent
+ prefix = #{npm_prefix}
EOS
end
+
+ def caveats
+ if ARGV.include? '--without-npm'
+ <<-EOS.undent
+ Homebrew has NOT installed npm. We recommend the following method of
+ installation:
+ curl http://npmjs.org/install.sh | sh
+
+ After installing, add the following path to your NODE_PATH environment
+ variable to have npm libraries picked up:
+ #{modules_folder}
+ EOS
+ elsif not ENV['PATH'].split(':').include? npm_bin
+ <<-EOS.undent
+ Homebrew installed npm.
+ We recommend prepending the following path to your PATH environment
+ variable to have npm-installed binaries picked up:
+ #{npm_bin}
+ EOS
+ end
+ end
end