From 77a516c2e07ab7caf994ef5c573be1eb647b7aa8 Mon Sep 17 00:00:00 2001 From: Phillip Johnsen Date: Sun, 29 Jul 2018 01:15:32 +0200 Subject: [PATCH] chore: install release tools with npm rather than via pre-commit hook Previously mocha, uglifyjs and jshint used when publishing a new version were ensured / installed by `Rakefile` via the pre-commit git hook. Those modules were automatically installed globally if not present in `$PATH`. Installing modules globally has one particular dowsides that we should avoid: we can't ensure developers publishing new mustache.js versions have the same version of these 3rd party modules installed. If instead we make these modules local dev dependencies, we can ensure which versions are installed, and we make 3rd party depedencies explicit by listing them in `package.json`, rather than in `Rakefile`. --- Rakefile | 18 +++--------------- hooks/pre-commit | 5 ----- package.json | 2 ++ 3 files changed, 5 insertions(+), 20 deletions(-) diff --git a/Rakefile b/Rakefile index c019087..af488a0 100644 --- a/Rakefile +++ b/Rakefile @@ -7,31 +7,19 @@ def minified_file ENV['FILE'] || 'mustache.min.js' end -task :install_mocha do - sh "npm install -g mocha" if `which mocha`.empty? -end - -task :install_uglify do - sh "npm install -g uglify-js" if `which uglifyjs`.empty? -end - -task :install_jshint do - sh "npm install -g jshint" if `which jshint`.empty? -end - desc "Run all tests" task :test => :install_mocha do - sh "mocha test" + sh "./node_modules/.bin/mocha test" end desc "Make a compressed build in #{minified_file}" task :minify => :install_uglify do - sh "uglifyjs mustache.js > #{minified_file}" + sh "./node_modules/.bin/uglifyjs mustache.js > #{minified_file}" end desc "Run JSHint" task :hint => :install_jshint do - sh "jshint mustache.js" + sh "./node_modules/.bin/jshint mustache.js" end # Creates a task that uses the various template wrappers to make a wrapped diff --git a/hooks/pre-commit b/hooks/pre-commit index 7b75dd3..3e4e603 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -72,11 +72,6 @@ class Bumper def did_bump if !@bumped puts 'bump detected!' - if `which uglifyjs`.empty? - puts_c 31, 'you need uglifyjs installed' - puts 'run `sudo npm install -g uglify-js`' - exit 1 - end end @bumped = true end diff --git a/package.json b/package.json index d307805..8148e5a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,9 @@ "devDependencies": { "chai": "^3.4.0", "eslint": "^2.5.1", + "jshint": "^2.9.5", "mocha": "^3.0.2", + "uglify-js": "^3.4.6", "zuul": "^3.11.0" }, "spm": {