| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- const fs = require('fs-extra');
 
- const path = require('path');
 
- const jsonfile = require('jsonfile');
 
- const yargs = require('yargs')(process.argv.slice(2));
 
- const argv = yargs
 
-     .usage('Usage: $0 -s <source> -d <dist>')
 
-     .help('help')
 
-     .alias('version', 'v')
 
-     .option('help', {
 
-         alias: 'h'
 
-     })
 
-     .option('source', {
 
-         alias: 's',
 
-         type: 'string',
 
-         requiresArg: true,
 
-         describe: 'The directory where dependencies is.',
 
-     })
 
-     .option('dist', {
 
-         alias: 'd',
 
-         type: 'string',
 
-         requiresArg: true,
 
-         describe: 'The directory where dependencies would be copies to.',
 
-     })
 
-     .option('dryrun', {
 
-         type: 'boolean',
 
-         describe: 'Find the dependencies and log to the screen only.',
 
-     })
 
-     .option('verbose', {
 
-         alias: 'V',
 
-         type: 'boolean',
 
-         describe: 'Enable verbose log.',
 
-     })
 
-     .argv;
 
- const pkgfile = require('./package');
 
- function getDependencies(allDependenciesDir, level, sourceDir, dependencies) {
 
-     for (let i = 0; i < dependencies.length; i++) {
 
-         let dependency = dependencies[i];
 
-         let dependencyDir = path.join(sourceDir, dependency);
 
-         if (!fs.existsSync(dependencyDir)) {
 
-             throw new Error('Dependency "' + dependency + '" does not exist!');
 
-         }
 
-         let dependencyPackageFile = path.join(dependencyDir, 'package.json');
 
-         if (!fs.existsSync(dependencyPackageFile)) {
 
-             throw new Error('Dependency "' + dependency + '" package file does not exist!');
 
-         }
 
-         let dependencyPackage = jsonfile.readFileSync(dependencyPackageFile, { throws: false });
 
-         if (!dependencyPackage) {
 
-             throw new Error('Dependency "' + dependency + '" package file loads failed!');
 
-         }
 
-         if (argv.verbose) {
 
-             let logPrefix = '';
 
-             for (let i = 0; i < level * 2; i++) {
 
-                 logPrefix += '-';
 
-             }
 
-             console.log(logPrefix + (logPrefix && ' ') + 'find dependency ' + dependency);
 
-         }
 
-         if (dependencyPackage.dependencies) {
 
-             let subDependenciesDir = [];
 
-             let subDependencies = [];
 
-             for (subDependency in dependencyPackage.dependencies) {
 
-                 if (!dependencyPackage.dependencies.hasOwnProperty(subDependency)) {
 
-                     continue;
 
-                 }
 
-                 subDependencies.push(subDependency);
 
-             }
 
-             subDependenciesDir = getDependencies([], level + 1, sourceDir, subDependencies);
 
-             allDependenciesDir.push(...subDependenciesDir);
 
-         }
 
-         allDependenciesDir.push(dependencyDir);
 
-     }
 
-     return allDependenciesDir;
 
- }
 
- function copyDependencies(dependenciesDir, dist) {
 
-     let dependenciesDirSet = {};
 
-     for (let i = 0; i < dependenciesDir.length; i++) {
 
-         let dependencyDir = dependenciesDir[i];
 
-         dependenciesDirSet[dependencyDir] = true;
 
-     }
 
-     for (let dependencyDir in dependenciesDirSet) {
 
-         if (!dependenciesDirSet.hasOwnProperty(dependencyDir)) {
 
-             continue;
 
-         }
 
-         let srcDir = path.join(__dirname, dependencyDir);
 
-         let distDir = path.join(__dirname, dist, dependencyDir);
 
-         if (!fs.existsSync(distDir)) {
 
-             fs.mkdirpSync(distDir);
 
-         }
 
-         fs.copySync(srcDir, distDir);
 
-     }
 
- }
 
- if (!argv.source || !argv.dist || argv.help) {
 
-     yargs.showHelp();
 
- } else {
 
-     let dependencies = getDependencies([], 0, argv.source, pkgfile.mainDependencies);
 
-     if (!argv.dryrun) {
 
-         copyDependencies(dependencies, argv.dist);
 
-     }
 
- }
 
 
  |