feat(cli): add build-site command

This commit is contained in:
陈嘉涵
2019-11-29 17:11:07 +08:00
parent f1310ff01b
commit 5f91e16825
11 changed files with 164 additions and 120 deletions
@@ -0,0 +1,7 @@
import { setNodeEnv } from '../common';
import { compileSite } from '../compiler/compile-site';
export async function buildSite() {
setNodeEnv('production');
await compileSite(true);
}
+8 -22
View File
@@ -1,12 +1,11 @@
import webpack from 'webpack';
import { start, error, success } from 'signale';
import { packageConfig } from '../config/webpack.package';
import { join } from 'path';
import { clean } from './clean';
import { remove, copy, readdirSync } from 'fs-extra';
import { compileJs } from '../compiler/compile-js';
import { compileSfc } from '../compiler/compile-sfc';
import { compileStyle } from '../compiler/compile-style';
import { compilePackage } from '../compiler/compile-package';
import { genPackageEntry } from '../compiler/gen-package-entry';
import { genStyleDepsMap } from '../compiler/gen-style-deps-map';
import { genComponentStyle } from '../compiler/gen-component-style';
@@ -14,10 +13,12 @@ import { SRC_DIR, LIB_DIR, ES_DIR } from '../common/constant';
import {
isDir,
isSfc,
isStyle,
isScript,
isDemoDir,
isTestDir,
isScript,
isStyle
setNodeEnv,
setModuleEnv
} from '../common';
async function compileDir(dir: string) {
@@ -52,22 +53,6 @@ async function compileDir(dir: string) {
);
}
function setModuleEnv(value: string) {
process.env.BABEL_MODULE = value;
}
function buildPackage(isMinify: boolean) {
return new Promise((resolve, reject) => {
webpack(packageConfig(isMinify), (err, stats) => {
if (err || stats.hasErrors()) {
reject();
} else {
resolve();
}
});
});
}
export async function buildESModuleOutputs() {
await copy(SRC_DIR, ES_DIR);
@@ -113,8 +98,8 @@ export async function buildPackedOutputs() {
try {
genPackageEntry();
await buildPackage(false);
await buildPackage(true);
await compilePackage(false);
await compilePackage(true);
success('Build packed outputs');
} catch (err) {
error('Build packed outputs');
@@ -122,6 +107,7 @@ export async function buildPackedOutputs() {
}
export async function build() {
setNodeEnv('production');
await clean();
await buildESModuleOutputs();
await buildCommonjsOutputs();
+5 -42
View File
@@ -1,47 +1,10 @@
import webpack from 'webpack';
import WebpackDevServer from 'webpack-dev-server';
import { getPort } from 'portfinder';
import { clean } from '../commands/clean';
import { buildESModuleOutputs } from './build';
import { siteDevConfig } from '../config/webpack.site.dev';
import { genPackageEntry } from '../compiler/gen-package-entry';
import { genPacakgeStyle } from '../compiler/gen-package-style';
import { genSiteMobileShared } from '../compiler/gen-site-mobile-shared';
import { genSiteDesktopShared } from '../compiler/gen-site-desktop-shared';
import { genStyleDepsMap } from '../compiler/gen-style-deps-map';
function runWebpack() {
const server = new WebpackDevServer(
webpack(siteDevConfig),
(siteDevConfig as any).devServer
);
getPort(
{
port: 8080
},
(err, port) => {
if (err) {
console.log(err);
return;
}
server.listen(port, 'localhost', (err?: Error) => {
if (err) {
console.log(err);
}
});
}
);
}
import { setNodeEnv } from '../common';
import { compileSite } from '../compiler/compile-site';
export async function dev() {
setNodeEnv('development');
await clean();
await buildESModuleOutputs();
genStyleDepsMap();
genPackageEntry();
genPacakgeStyle();
genSiteMobileShared();
genSiteDesktopShared();
runWebpack();
await compileSite();
}
+1 -1
View File
@@ -1,7 +1,7 @@
/* eslint-disable no-template-curly-in-string */
import { build } from './build';
// @ts-ignore
import releaseIt from 'release-it';
import { build } from './build';
export async function release() {
await build();