mirror of
https://github.com/bower/bower.git
synced 2026-01-13 00:08:13 -05:00
129 lines
3.7 KiB
JavaScript
129 lines
3.7 KiB
JavaScript
var tmp = require('tmp');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var glob = require('glob');
|
|
|
|
var childProcess = require('child_process');
|
|
var arraydiff = require('arr-diff');
|
|
var wrench = require('wrench');
|
|
|
|
var jsonPackage = require('./package');
|
|
|
|
if (
|
|
childProcess
|
|
.execSync('git rev-parse --abbrev-ref HEAD')
|
|
.toString()
|
|
.trim() !== 'master'
|
|
) {
|
|
console.log('You need to release bower from the "master" branch');
|
|
|
|
process.exit(1);
|
|
}
|
|
|
|
var dir = path.join(tmp.dirSync().name, 'package');
|
|
|
|
console.log('\nInstalling production bundle in:');
|
|
console.log(dir + '\n');
|
|
|
|
wrench.copyDirSyncRecursive(__dirname, dir, {
|
|
forceDelete: true,
|
|
include: function(path) {
|
|
return !path.match(/node_modules|\.git|test/);
|
|
}
|
|
});
|
|
|
|
delete jsonPackage.scripts;
|
|
delete jsonPackage.private;
|
|
jsonPackage.workspaces.forEach(function(name) {
|
|
jsonPackage.dependencies[name.split('/').reverse()[0]] = 'file:./' + name;
|
|
});
|
|
delete jsonPackage.workspaces;
|
|
|
|
fs.writeFileSync(
|
|
path.resolve(dir, 'package.json'),
|
|
JSON.stringify(jsonPackage, null, ' ') + '\n'
|
|
);
|
|
|
|
console.log('Installing production dependencies...');
|
|
childProcess.execSync('yarn --production', {
|
|
cwd: dir,
|
|
stdio: [0, 1, 2]
|
|
});
|
|
|
|
delete jsonPackage.dependencies;
|
|
delete jsonPackage.resolutions;
|
|
delete jsonPackage['lint-staged'];
|
|
delete jsonPackage.devDependencies;
|
|
delete jsonPackage.files;
|
|
|
|
fs.writeFileSync(
|
|
path.resolve(dir, 'package.json'),
|
|
JSON.stringify(jsonPackage, null, ' ') + '\n'
|
|
);
|
|
|
|
glob.sync(path.join(dir, '**', '.npmignore')).forEach(function(file) {
|
|
fs.rmSync(file);
|
|
});
|
|
|
|
fs.writeFileSync(path.resolve(dir, '.npmignore'), '');
|
|
|
|
console.log('Moving node_modules to lib directory...');
|
|
|
|
wrench.copyDirSyncRecursive(
|
|
path.resolve(dir, 'node_modules'),
|
|
path.resolve(dir, 'lib', 'node_modules')
|
|
);
|
|
wrench.rmdirSyncRecursive(path.resolve(dir, 'node_modules'));
|
|
|
|
glob.sync(path.join(dir, '**', 'package.json')).forEach(function(file) {
|
|
console.log(file);
|
|
var json = JSON.parse(fs.readFileSync(file));
|
|
delete json.files;
|
|
fs.writeFileSync(file, JSON.stringify(json, null, ' ') + '\n');
|
|
});
|
|
|
|
console.log('Testing bower on sample project...');
|
|
|
|
childProcess.execSync(
|
|
'cd test/sample && rm -rf bower_components && ' +
|
|
dir +
|
|
'/bin/bower install --force',
|
|
{ stdio: [0, 1, 2] }
|
|
);
|
|
|
|
var expectedPackages = (
|
|
'SHA-1 ace-builds almond angular angular-animate angular-bootstrap angular-charts angular-contenteditable ' +
|
|
'angular-deckgrid angular-fullscreen angular-gravatar angular-hotkeys angular-local-storage angular-marked ' +
|
|
'angular-moment angular-sanitize angular-touch angular-ui-router angular-ui-sortable ' +
|
|
'angulartics asEvented bootstrap coffee-script d3 es6-shim font-awesome howler jquery ' +
|
|
'jquery-ui jquery-waypoints js-beautify lodash lz-string marked moment ng-file-upload peerjs ' +
|
|
'requirejs restangular slimScroll slimScrollHorizontal venturocket-angular-slider'
|
|
).split(' ');
|
|
|
|
var installedPackages = fs.readdirSync('./test/sample/bower_components');
|
|
|
|
var installedDiff = arraydiff(expectedPackages, installedPackages);
|
|
|
|
if (installedDiff.length > 0) {
|
|
console.log('ERROR. Some packages were not installed by bower: ');
|
|
console.log(installedDiff.join(', '));
|
|
|
|
process.exit(1);
|
|
}
|
|
|
|
var tgzName = 'bower-' + jsonPackage.version + '.tgz';
|
|
|
|
childProcess.execSync('npm pack', {
|
|
cwd: dir,
|
|
stdio: [0, 1, 2]
|
|
});
|
|
|
|
fs.copyFileSync(path.join(dir, tgzName), path.join(__dirname, tgzName));
|
|
|
|
console.log('All done!');
|
|
console.log('You need to publish prerelease and release manually:');
|
|
console.log('');
|
|
console.log('- npm install -g ' + tgzName);
|
|
console.log('- npm publish ' + tgzName + ' --tag beta');
|
|
console.log('- npm dist-tag add bower@' + jsonPackage.version + ' latest');
|