Skip to content
This repository has been archived by the owner on May 30, 2019. It is now read-only.

Commit

Permalink
js: install improvements
Browse files Browse the repository at this point in the history
- set flag in .npmrc so that optional deps aren't installed
- preinstall script allows node ~0.10.20
- postinstall script exits early on failure, maintains color-coding

Closes #608
  • Loading branch information
laurelnaiad committed Mar 26, 2015
1 parent 800beaf commit 14894ca
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 25 deletions.
1 change: 1 addition & 0 deletions .npmrc
@@ -0,0 +1 @@
optional = false
120 changes: 97 additions & 23 deletions shared/js/dev-tasks/postinstall.js
Expand Up @@ -15,36 +15,110 @@
// console.log('...done.');
// }

// run bower install in browser dir
// TODO: get phantomjs e2e working
//
// var selVer = '2.43.1';
// var pconfig = require('protractor/config.json');
//
// if (pconfig.webdriverVersions.selenium !== selVer) {
// console.log(
// 'Configuring protractor to use Selenium Server version ' +
// selVer + ' for PhantomJS support...'
// );
// pconfig.webdriverVersions.selenium = selVer;
// require('fs').writeFileSync(
// 'node_modules/protractor/config.json', JSON.stringify(pconfig)
// );
// console.log('...done.');
// }

// run bower install in browser dir

var path = require('path');
var del = require('del');
var shelljs = require('shelljs');
var chalk = require('chalk');

console.log(chalk.green('Samplestack: fetching browser run-time dependencies'));
del(
'browser/bower_components',
{},
function (err) {
if (err) {
console.log('Unable to clear browser\'s bower_components directory.');
return process.exit(1);
}
var cp = require('child_process');

// first run an install of npm, specifying no optional deps
// then install bower components
// then clean up files which may remain from earlier Samplestack versions

// don't try to use these until a successful install has happened
var chalk;
var del;

shelljs.cd('browser');
shelljs.exec(
'node ' + path.normalize('../node_modules/bower/bin/bower') + ' install'
);
shelljs.cd('..');
var rootDir = path.resolve(__dirname, '../../..');

console.log(chalk.green('Samplestack: cleaning up unused directories'));
del([
// // run npm install in the root dir, specifyin no optional deps
// // exit on fail, otherwise call back
// var doInst = function (cb) {
// var instProc = cp.spawn(
// 'npm',
// ['install', '--no-optional'],
// { stdio: 'inherit', cwd: rootDir }
// );
// instProc.on('exit', function (err) {
// if (err) {
// return process.exit(err);
// }
// cb();
// });
// };

// clean up bower_components, run bower install from browser dir
// exit on fail, otherwise call back
var doBower = function (cb) {
chalk = require('chalk');
del = require('del');
console.log(
chalk.green('Samplestack: fetching browser run-time dependencies')
);
del(
'browser/bower_components',
{ cwd: rootDir },
function (err) {
if (err) {
console.log('Unable to clear browser\'s bower_components directory.');
return process.exit(err);
}
var bowerProc = cp.spawn(
'node',
[path.resolve(rootDir, 'node_modules/bower/bin/bower'), 'install'],
{ stdio: 'inherit', cwd: path.join( rootDir, 'browser') }
);

bowerProc.on('exit', function (err) {
if (err) {
return process.exit(err);
}
cb();
});
}
);
};

// clean up old directories, exit on fail, otherwise optionally call back
var doCleanup = function (cb) {
chalk = require('chalk');
del = require('del');
console.log(chalk.green('Samplestack: cleaning up unused directories'));
del(
[
'browser/dev-tasks',
'browser/node_modules',
'appserver/node-express/node_modules',
'browser/npm-debug.log',
'appserver/node-express/npm-debug.log'
]);
}
);
],
{ cwd: rootDir },
function (err) {
if (err) {
return process.exit(err);
}
if (cb) {
cb();
}
}
);
};

doBower(doCleanup);
4 changes: 2 additions & 2 deletions shared/js/dev-tasks/preinstall.js
Expand Up @@ -8,10 +8,10 @@ var version = function () {

var v = version();

if (v.minor !== 10 || v.revision < 24) {
if (v.minor !== 10 || v.revision < 20) {
process.stderr.write(
'Unsupported Node.js version (' + process.version + ').\n\n' +
'Please install a recent release of Node.js 0.10.x'
'Please install a recent release of Node.js 0.10.x ()'
);
process.exit(1);
}

0 comments on commit 14894ca

Please sign in to comment.