refactor: folder structure & filename

This commit is contained in:
endiliey 2018-08-01 16:55:53 +08:00
parent 9070fb50ab
commit dbf78c5c14
10 changed files with 79 additions and 74 deletions

View file

@ -1,58 +1,58 @@
#!/usr/bin/env node #!/usr/bin/env node
const chalk = require('chalk'); const chalk = require('chalk');
const semver = require('semver'); const semver = require('semver');
const path = require('path'); const path = require('path');
const program = require('commander'); const program = require('commander');
const {dev, build} = require('../lib'); const {dev, build} = require('../lib');
const requiredVersion = require('../package.json').engines.node; const requiredVersion = require('../package.json').engines.node;
if (!semver.satisfies(process.version, requiredVersion)) { if (!semver.satisfies(process.version, requiredVersion)) {
console.log( console.log(
chalk.red(`\nMinimum node version not met :)`) + chalk.red(`\nMinimum node version not met :)`) +
chalk.yellow( chalk.yellow(
`\nYou are using Node ${ `\nYou are using Node ${
process.version process.version
}, but blogi requires Node ${requiredVersion}.\n` }, but blogi requires Node ${requiredVersion}.\n`
) )
); );
process.exit(1); process.exit(1);
} }
function wrapCommand(fn) { function wrapCommand(fn) {
return (...args) => return (...args) =>
fn(...args).catch(err => { fn(...args).catch(err => {
console.error(chalk.red(err.stack)); console.error(chalk.red(err.stack));
process.exitCode = 1; process.exitCode = 1;
}); });
} }
program program
.version(require('../package.json').version) .version(require('../package.json').version)
.usage('<command> [options]'); .usage('<command> [options]');
program program
.command('dev [targetDir]') .command('dev [targetDir]')
.description('start development server') .description('start development server')
.option('-p, --port <port>', 'use specified port (default: 8080)') .option('-p, --port <port>', 'use specified port (default: 8080)')
.action((dir = '.', {port}) => { .action((dir = '.', {port}) => {
wrapCommand(dev)(path.resolve(dir), {port}); wrapCommand(dev)(path.resolve(dir), {port});
}); });
program program
.command('build [targetDir]') .command('build [targetDir]')
.description('build dir as static site') .description('build dir as static site')
.option( .option(
'-d, --dest <outDir>', '-d, --dest <outDir>',
'specify build output dir (default: .blogi/dist)' 'specify build output dir (default: .blogi/dist)'
) )
.action((dir = '.', {dest}) => { .action((dir = '.', {dest}) => {
const outDir = dest ? path.resolve(dest) : null; const outDir = dest ? path.resolve(dest) : null;
wrapCommand(build)(path.resolve(dir), {outDir}); wrapCommand(build)(path.resolve(dir), {outDir});
}); });
program.parse(process.argv); program.parse(process.argv);
if (!process.argv.slice(2).length) { if (!process.argv.slice(2).length) {
program.outputHelp(); program.outputHelp();
} }

View file

@ -13,8 +13,8 @@ const serve = require('webpack-serve');
const serveWaitpage = require('webpack-serve-waitpage'); const serveWaitpage = require('webpack-serve-waitpage');
const webpackNiceLog = require('webpack-nicelog'); const webpackNiceLog = require('webpack-nicelog');
const HtmlWebpackPlugin = require('html-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin');
const load = require('./loader'); const load = require('../loader');
const createDevConfig = require('./webpack/dev'); const createDevConfig = require('../webpack/dev');
async function getPort(port) { async function getPort(port) {
portfinder.basePort = parseInt(port, 10) || 8080; portfinder.basePort = parseInt(port, 10) || 8080;
@ -61,7 +61,7 @@ module.exports = async function dev(sourceDir, cliOptions = {}) {
{ {
inject: false, inject: false,
hash: true, hash: true,
template: path.resolve(__dirname, 'core/index.html'), template: path.resolve(__dirname, '../core/index.html'),
filename: 'index.html' filename: 'index.html'
} }
]); ]);

View file

@ -19,7 +19,7 @@ class App extends React.Component {
<div key={path}> <div key={path}>
<Link to={path}>{path}</Link> <Link to={path}>{path}</Link>
</div> </div>
))} ))}
</div> </div>
</div> </div>
</BrowserRouter> </BrowserRouter>

View file

@ -1,2 +1,7 @@
exports.dev = require('./dev'); const dev = require('./commands/dev');
exports.build = require('./build'); const build = require('./commands/build');
module.exports = {
dev,
build
};

View file

@ -25,12 +25,12 @@ module.exports = async function load(sourceDir) {
? path.resolve(siteConfig.dest) ? path.resolve(siteConfig.dest)
: path.resolve(sourceDir, '.blogi/dist'); : path.resolve(sourceDir, '.blogi/dist');
// resolve the path of our app theme/ layout // resolve the path of our app user interface layout
const themePath = const uiPath =
!siteConfig.themePath || !siteConfig.uiPath ||
!fs.existsSync(path.resolve(sourceDir, siteConfig.themePath)) !fs.existsSync(path.resolve(sourceDir, siteConfig.uiPath))
? path.resolve(__dirname, '../theme') ? path.resolve(__dirname, '../ui')
: siteConfig.themePath; : siteConfig.uiPath;
const publicPath = siteConfig.base || '/'; const publicPath = siteConfig.base || '/';
@ -39,7 +39,7 @@ module.exports = async function load(sourceDir) {
blogDatas, blogDatas,
sourceDir, sourceDir,
outDir, outDir,
themePath, uiPath,
publicPath publicPath
}; };
}; };

View file

@ -2,7 +2,7 @@ const Config = require('webpack-chain');
const path = require('path'); const path = require('path');
module.exports = function createBaseConfig(props) { module.exports = function createBaseConfig(props) {
const {outDir, themePath, sourceDir, publicPath} = props; const {outDir, uiPath, sourceDir, publicPath} = props;
const config = new Config(); const config = new Config();
const isProd = process.env.NODE_ENV === 'production'; const isProd = process.env.NODE_ENV === 'production';
@ -17,7 +17,7 @@ module.exports = function createBaseConfig(props) {
config.resolve config.resolve
.set('symlinks', true) .set('symlinks', true)
.alias.set('@theme', themePath) .alias.set('@ui', uiPath)
.set('@source', sourceDir) .set('@source', sourceDir)
.set('@generated', path.resolve(__dirname, '../generated')) .set('@generated', path.resolve(__dirname, '../generated'))
.set('@core', path.resolve(__dirname, '../core')) .set('@core', path.resolve(__dirname, '../core'))

View file

@ -4,7 +4,7 @@ const createBaseConfig = require('./base');
module.exports = function createDevConfig(props) { module.exports = function createDevConfig(props) {
const config = createBaseConfig(props); const config = createBaseConfig(props);
config.entry('main').add(path.resolve(__dirname, '../core/index.js')); config.entry('main').add(path.resolve(__dirname, '../core/devEntry.js'));
return config; return config;
}; };