UNPKG

2.35 kBJavaScriptView Raw
1/**
2 * @file start commander, entry file
3 * @author zhangpeng53
4 */
5
6const wpconfig = require('../webpack.config');
7const webpack = require('webpack');
8const walkmd = require('./walkmd');
9const sh = require('child_process').execSync;
10const path = require('path');
11const fs = require('fs');
12const parseNav = require('./parseNav');
13
14const node_modules = path.resolve(__dirname, '../node_modules');
15const wpconfigPath = path.resolve(__dirname, '../webpack.config.js');
16
17
18function parseWPConfig(config, isProduction) {
19 let res = wpconfig(isProduction);
20 if (config.setWebpackConfig) {
21 res = config.setWebpackConfig(res);
22 }
23 return res;
24}
25
26function before(config) {
27
28 let src;
29 let dist = path.resolve(__dirname, '../theme');
30
31 // 如果是默认主题则使用theme_default
32 if (config.theme == 'default' || !config.theme) {
33 src = path.resolve(__dirname, '../theme_default');
34 } else {
35 src = path.resolve(process.cwd(), config.theme);
36 }
37 sh(`rm -rf ${dist}`);
38 sh(`cp -R ${src} ${dist}`);
39 config.theme = dist;
40
41
42 // sh(`rm -rf ./www`);
43
44 const www = path.resolve(__dirname, '../www');
45 sh(`rm -rf ${www}`);
46 sh(`cp -R ${src + './static'} ${dist}`);
47
48 //创建临时文件夹
49 const tmp = config.theme + '/tmp';
50 if (fs.existsSync(tmp)) sh(`rm -rf ${tmp}`);
51 fs.mkdirSync(tmp);
52
53 if (config.nav && config.nav.length) parseNav(config);
54};
55
56exports.build = config => {
57 before(config);
58
59 walkmd(config, () => {
60 const site = path.resolve(process.cwd(), 'site');
61 sh(`rm -rf ${site}`);
62
63 const compiler = webpack(parseWPConfig(config, true));
64 compiler.run((err, stats) => {
65 // console.log(stats);
66 });
67 });
68}
69
70exports.dev = config => {
71 before(config);
72
73 walkmd(config, () => {
74
75 // const server = new webdevServer(compiler, wpconfig.devServer);
76 // server.listen(wpconfig.devServer.port, "localhost", ()=> {
77 // console.log('====start-dev-server====');
78 // });
79
80 // TODO
81 // const db = require("./tmp/__md__");
82
83 const server = require('./server');
84 const wpConfig = parseWPConfig(config, false);
85 server(config, wpConfig);
86 // sh(`${node_modules}/.bin/webpack-dev-server --config ${wpconfigPath}`);
87 });
88}
\No newline at end of file