完成dev脚本

This commit is contained in:
Harvey Zack committed 2018-12-03 11:15:43 +08:00
1 parent c2bbe15e79
commit cc2027832e
7 files changed
+118 -12

No files matched your search

@@ -12,8 +12,7 @@ const svgo = require('rollup-plugin-svgo');
const { uglify } = require('rollup-plugin-uglify');
const copyAfterBuild = require('./copyAfterBuild');
function creatRollupConfig(target) {
const projectPath = path.join(process.cwd(), 'packages', target);
module.exports = function creatRollupConfig(projectPath) {
const packageJson = JSON.parse(fs.readFileSync(path.join(projectPath, 'package.json'), 'utf-8'));
const { version, homepage, name } = packageJson;
const isProd = process.env.NODE_ENV === 'production';
@@ -67,12 +66,11 @@ function creatRollupConfig(target) {
preamble: banner,
},
}),
isProd && copyAfterBuild({
from: path.join(projectPath, 'dist/*'),
to: path.join(process.cwd(), 'docs/compiled'),
}),
isProd &&
copyAfterBuild({
from: path.join(projectPath, 'dist/*'),
to: path.join(process.cwd(), 'docs/compiled'),
}),
],
};
}
module.exports = creatRollupConfig(process.env.TARGET);
};
+51
View File
@@ -0,0 +1,51 @@
const inquirer = require('inquirer');
const rollup = require('rollup');
const logger = require('./logger');
const projects = require('./getProjects')();
const creatRollupConfig = require('./creatRollupConfig');
function develop(projectPath) {
const config = creatRollupConfig(projectPath);
const watcher = rollup.watch(config);
watcher.on('event', event => {
switch (event.code) {
case 'START':
logger.log('checking rollup version...');
break;
case 'BUNDLE_START':
logger.log(`bundling ${config.output.file}...`);
break;
case 'BUNDLE_END':
logger.success(`${config.output.file} bundled in ${event.duration}ms.`);
logger.success('Watching for changes...');
break;
case 'END':
logger.success('finished building all bundles');
break;
case 'ERROR':
logger.fatal(`error: ${event.error}`);
break;
case 'FATAL':
logger.fatal(`fatal: ${event.error}`);
break;
default:
logger.warn(`unknown event: ${event.code}`);
}
});
}
inquirer
.prompt([
{
type: 'list',
message: 'Which project do you want to develop?',
name: 'project',
choices: Object.keys(projects),
},
])
.then(answers => {
develop(projects[answers.project]);
})
.catch(err => {
logger.fatal(err);
});
+11
View File
@@ -0,0 +1,11 @@
const path = require('path');
const glob = require('glob');
module.exports = function getProjects() {
const projects = {};
glob.sync(path.join(process.cwd(), 'packages/*')).forEach(item => {
const name = item.split(path.sep).pop();
projects[name] = item;
});
return projects;
};
+27
View File
@@ -0,0 +1,27 @@
const chalk = require('chalk');
const { format } = require('util');
const prefix = 'artplayer-cli';
const sep = chalk.gray('·');
exports.log = function log(...args) {
const msg = format.apply(format, args);
console.log(chalk.white(prefix), sep, msg);
};
exports.fatal = function fatal(...args) {
if (args[0] instanceof Error) args[0] = args[0].message.trim();
const msg = format.apply(format, args);
console.error(chalk.red(prefix), sep, msg);
process.exit(1);
};
exports.success = function success(...args) {
const msg = format.apply(format, args);
console.log(chalk.green(prefix), sep, msg);
};
exports.warn = function warn(...args) {
const msg = format.apply(format, args);
console.log(chalk.yellow(prefix), sep, msg);
};