You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
var fs = require('fs-extra'),
|
|
path = require('path');
|
|
|
|
var _ = require('lodash'),
|
|
glob = require('glob'),
|
|
moment = require('moment'),
|
|
ncp = require('ncp').ncp;
|
|
|
|
var cwd = process.cwd();
|
|
|
|
var packages = _.transform(glob.sync(path.join(cwd, 'lodash.*')), function(result, pathname) {
|
|
var stat = fs.statSync(path.join(pathname, 'index.js'));
|
|
if (!moment(stat.mtime).isSame(stat.birthtime)) {
|
|
result[path.basename(pathname)] = require(path.join(pathname, 'package.json'));
|
|
}
|
|
}, {});
|
|
|
|
var grouped = _.groupBy(packages, 'version');
|
|
|
|
_.forOwn(grouped, function(packages, version) {
|
|
var pathname = path.join(cwd, version);
|
|
if (!fs.existsSync(pathname)) {
|
|
fs.ensureDirSync(pathname);
|
|
}
|
|
_.each(packages, function(pkg) {
|
|
var source = path.join(cwd, pkg.name),
|
|
destination = path.join(pathname, pkg.name);
|
|
|
|
ncp(source, destination, function (err) {
|
|
if (err) {
|
|
console.error(err);
|
|
return;
|
|
}
|
|
// console.log('copied ' + pkg.name + ' to ' + path.join(version, pkg.name));
|
|
});
|
|
});
|
|
});
|