rerumaccusamus
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
279 lines (200 loc) • 6.52 kB
Markdown
---
sidebar_position: 5
---
```bash
Usage: modern build [options]
build application
Options:
--analyze 分析构建产物体积,查看各个模块打包后的大小
-h, --help display help for command
```
`modern build` 命令默认会在 `/dist` 目录下构建出可用于生产环境的产物。
可以通过修改配置 [`output.path`](/docs/apis/config/output/path) 指定产物的输出目录。
## 分析构建产物体积
执行 `modern build --analyze` 命令,可以在打包生产环境代码的同时,产出一个分析构建产物体积的 HTML 文件:
```
Bundle Analyzer saved report to /example/dist/report.html
File sizes after production build:
122.35 KB dist/static/js/885.1d4fbe5a.js
2.3 KB dist/static/js/main.4b8e8d64.js
761 B dist/static/js/runtime-main.edb7cf35.js
645 B dist/static/css/main.0dd3ecc1.css
```
手动在浏览器中打开上述 HTML 文件,可以看到打包产物瓦片图,并进行包体积分析和优化:
<img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/mwa-build-analyze-8784f762c1ab0cb20935829d5f912c4c.png" />
> 该功能基于 [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) 实现。
## 命令行参数
import CommandTip from '@site/docs/components/command-tip.md'
<CommandTip />
## Electron 应用
Modern.js 提供了基于 Electron 的桌面应用开发模式。
可以在项目创建时选择:
```bash
? 是否需要支持以下类型应用 Electron
```
也可在项目执行 `new` 命令启用「Electron」模式:
```bash
$ npx modern new
? 请选择你想要的操作 启用可选功能
? 启用可选功能 启用「Electron」模式
```
### build electron-web
```bash
Usage: modern build electron-web [options]
build electron renderer with node environment
Options:
-h, --help display help for command
```
窗口中开启 Node 时构建渲染进程。
#### 示例
```json
{
"scripts": {
"build:render": "modern build electron-web",
}
}
```
在 Electron 中,项目下执行:`build:render` 命令,构建渲染进程(窗口中启用 Node)。
:::info 补充信息
关于窗口中【[开启 Node](/docs/guides/features/electron/develop#窗口中开启-node)】。
:::
### build electron-main
```bash
Usage: modern build electron-main [options]
build electron main process
Options:
-d, --development build with NODE_ENV=development
-m, --main <main> specify the entrance folder path of main process, such as: electron/
-i, --ignore <ignore> ignore folder or file
-e, --extra <extra...> specify extra folders to compile
-en, --enableNode enable use node in electron render
-h, --help display help for command
```
构建主进程。
#### 示例 - 普通构建
```json
{
"scripts": {
"build:main": "modern build electron-main",
}
}
```
在 Electron 中,项目下执行:`build:main` 命令,构建主进程。
#### 示例 - 指定主进程目录
打包的时候,我们也可以通过 `--main` 指定我们的主进程目录。
```json
{
"scripts": {
"build:main": "modern build electron-main --main ./electron",
}
}
```
#### 示例 - 指定其他编译目录
打包的时候,我们在主进程里引用了其他目录,则可以如下进行构建:
比如: 主进程使用了 shared 目录。
```bash
{
"scripts": {
"build:main": "modern build electron-main --extra ./shared",
}
}
```
:::tip
由于主进程目前采用的是 babel 构建,维持主进程目录结构。因此,在构建起他目录的时候,需要通过 --extra 进行额外的指定。
:::
> 详细示例:[主进程构建](/docs/guides/features/electron/extra/compile-extra)
#### 示例 - 忽略不需要编译的文件
我们可以通过指定 “--ignore” 忽略不需要编译的文件。
```json
{
"scripts": {
"build:main": "modern build electron-main --ignore electron/xx.ts,electron/xxx.ts",
}
}
```
:::info 补充信息
"--ignore" 也可以填写文件夹,多个可以逗号隔开。
:::
### build electron-app
```bash
Usage: modern build electron-app [options]
build electron app
Options:
-h, --help display help for command
```
打包应用。
#### 示例
```json
{
"scripts": {
"build:app": "modern build electron-app",
}
}
```
在构建完成主进程、渲染进程之后,执行此命令,打包成可执行文件与安装程序。
:::info 补充信息
- 其中,可在执行打包时传入环境变量 `PLATFORM` 指定构建的操作系统。
- `PLATFORM` 可为 `mac`、`win32`、`win64`、`linux`、`linuxArm64` 其中一个。
:::
### build electron
```bash
Usage: modern build electron [options]
build electron all: render process、main process and electron app
Options:
-d, --development build with NODE_ENV=development
-m, --main <main> specify the entrance folder path of main process, such as: electron/
-i, --ignore <ignore> ignore folder or file
-e, --extra <extra...> specify extra folders to compile
-en, --enableNode enable use node in electron render
-h, --help display help for command
一行命令构建:渲染进程、主进程、应用。
```json
{
"scripts": {
"build:all": "modern build electron",
}
}
```
通过上述命令,会顺序构建渲染进程、主进程,打包应用。
:::info 补充信息
- 其中,可在执行打包时传入环境变量 `PLATFORM` 指定构建的操作系统。
- `PLATFORM` 可为 `mac`、`win32`、`win64`、`linux`、`linuxArm64` 其中一个。
:::
#### 示例 -【DEBUG 模式】构建
有时候我们期望打一些 DEBUG 包,其中的 js 没有被混淆压缩,我们可以这样:
```json
{
"scripts": {
"build:all": "modern build electron --development",
}
}
```
#### 示例-指定主进程目录
打包的时候,我们也可以指定我们的主进程目录。
```json
{
"scripts": {
"build:all": "modern build electron --main ./electron",
}
}
```
#### 示例 - 启用 Node 构建渲染进程
```json
{
"scripts": {
"build:all": "modern build electron --enableNode",
}
}
```
#### 示例-忽略不需要编译的文件
我们可以通过指定 “--ignore” 忽略不需要编译的文件。
```json
{
"scripts": {
"build:all": "modern build electron --ignore electron/xx.ts,electron/xxx.ts",
}
}
```
:::info 补充信息
"--ignore" 也可以填写文件夹,多个可以逗号隔开。
:::