mirror of
https://github.com/youzan/vant.git
synced 2025-10-20 18:54:24 +00:00
feat(cli): add build-site command
This commit is contained in:
63
packages/vant-cli/src/compiler/compile-site.ts
Normal file
63
packages/vant-cli/src/compiler/compile-site.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import webpack from 'webpack';
|
||||
import WebpackDevServer from 'webpack-dev-server';
|
||||
import { getPort } from 'portfinder';
|
||||
import { buildESModuleOutputs } from '../commands/build';
|
||||
import { genPackageEntry } from './gen-package-entry';
|
||||
import { genPacakgeStyle } from './gen-package-style';
|
||||
import { genSiteMobileShared } from './gen-site-mobile-shared';
|
||||
import { genSiteDesktopShared } from './gen-site-desktop-shared';
|
||||
import { genStyleDepsMap } from './gen-style-deps-map';
|
||||
import { siteDevConfig } from '../config/webpack.site.dev';
|
||||
import { sitePrdConfig } from '../config/webpack.site.prd';
|
||||
|
||||
function watch() {
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function build() {
|
||||
return new Promise((resolve, reject) => {
|
||||
webpack(sitePrdConfig, (err, stats) => {
|
||||
if (err || stats.hasErrors()) {
|
||||
reject();
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export async function compileSite(production = false) {
|
||||
await buildESModuleOutputs();
|
||||
genStyleDepsMap();
|
||||
genPackageEntry();
|
||||
genPacakgeStyle();
|
||||
genSiteMobileShared();
|
||||
genSiteDesktopShared();
|
||||
|
||||
if (production) {
|
||||
await build();
|
||||
} else {
|
||||
watch();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user