From 568015972ab09de4c56958b98633df1692ade3d5 Mon Sep 17 00:00:00 2001 From: LGiki Date: Wed, 3 Aug 2022 15:15:22 +0800 Subject: [PATCH] Add `frontend:dev:install` configuration (#1666) * Add frontend:dev:install configuration * When building the frontend in dev mode, use `frontend:dev:install` (if it has been defined) to install the dependencies * Simplified logic for determining installation command Co-authored-by: Lea Anthony --- v2/internal/project/project.go | 5 +++-- v2/pkg/commands/build/base.go | 10 +++++++--- website/docs/reference/project-config.mdx | 1 + .../current/reference/project-config.mdx | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/v2/internal/project/project.go b/v2/internal/project/project.go index 1098d9a6..c348e8a2 100644 --- a/v2/internal/project/project.go +++ b/v2/internal/project/project.go @@ -22,6 +22,7 @@ type Project struct { // Commands used in `wails dev` DevCommand string `json:"frontend:dev"` + DevInstallCommand string `json:"frontend:dev:install"` DevWatcherCommand string `json:"frontend:dev:watcher"` // The url of the external wails dev server. If this is set, this server is used for the frontend. Default "" FrontendDevServerURL string `json:"frontend:dev:serverUrl"` @@ -85,8 +86,8 @@ type Project struct { } func (p *Project) GetDevInstallerCommand() string { - if p.DevCommand != "" { - return p.DevCommand + if p.DevInstallCommand != "" { + return p.DevInstallCommand } return p.InstallCommand } diff --git a/v2/pkg/commands/build/base.go b/v2/pkg/commands/build/base.go index 351d944f..9b1224ac 100644 --- a/v2/pkg/commands/build/base.go +++ b/v2/pkg/commands/build/base.go @@ -513,7 +513,11 @@ func (b *BaseBuilder) BuildFrontend(outputLogger *clilogger.CLILogger) error { frontendDir := filepath.Join(b.projectData.Path, "frontend") // Check there is an 'InstallCommand' provided in wails.json - if b.projectData.InstallCommand == "" { + installCommand := b.projectData.InstallCommand + if b.projectData.OutputType == "dev" { + installCommand = b.projectData.GetDevInstallerCommand() + } + if installCommand == "" { // No - don't install outputLogger.Println(" - No Install command. Skipping.") } else { @@ -521,9 +525,9 @@ func (b *BaseBuilder) BuildFrontend(outputLogger *clilogger.CLILogger) error { outputLogger.Print(" - Installing frontend dependencies: ") if verbose { outputLogger.Println("") - outputLogger.Println(" Install command: '" + b.projectData.InstallCommand + "'") + outputLogger.Println(" Install command: '" + installCommand + "'") } - if err := b.NpmInstallUsingCommand(frontendDir, b.projectData.InstallCommand, verbose); err != nil { + if err := b.NpmInstallUsingCommand(frontendDir, installCommand, verbose); err != nil { return err } outputLogger.Println("Done.") diff --git a/website/docs/reference/project-config.mdx b/website/docs/reference/project-config.mdx index 503c7089..374b5ea4 100644 --- a/website/docs/reference/project-config.mdx +++ b/website/docs/reference/project-config.mdx @@ -14,6 +14,7 @@ The project config resides in the `wails.json` file in the project directory. Th "frontend:install": "[The command to install node dependencies, run in the frontend directory - often `npm install`]", "frontend:build": "[The command to build the assets, run in the frontend directory - often `npm run build`]", "frontend:dev": "[This command is the dev equivalent of frontend:build. If not specified falls back to frontend:build]", + "frontend:dev:install": "[This command is the dev equivalent of frontend:install. If not specified falls back to frontend:install]", "frontend:dev:watcher": "[This command is run in a separate process on `wails dev`. Useful for 3rd party watchers or starting 3d party dev servers]", "frontend:dev:serverUrl": "[URL to a 3rd party dev server to be used to serve assets, EG Vite. If this is set to 'auto' then the devServerUrl will be inferred from the Vite output]", "wailsjsdir": "[Relative path to the directory that the auto-generated JS modules will be created]", diff --git a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/reference/project-config.mdx b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/reference/project-config.mdx index 199dea83..2140c4c2 100644 --- a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/reference/project-config.mdx +++ b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/reference/project-config.mdx @@ -14,6 +14,7 @@ sidebar_position: 5 "frontend:install": "[安装 node 依赖的命令,在 frontend 目录下运行 - 通常是 `npm install`]", "frontend:build": "[构建资源的命令,在 frontend 目录下运行 - 通常是 `npm run build`]", "frontend:dev": "[此命令等效于开发模式中的 frontend:build,如果没有指定则只有 frontend:build]", + "frontend:dev:install": "[此命令等效于开发模式中的 frontend:install,如果没有指定则只有 frontend:install]", "frontend:dev:watcher": "[此命令在 `wails dev` 上的单独进程中运行。对第 3 方观察者有用]", "frontend:dev:serverUrl": "[使用第三方开发服务器提供资源,比如 Vite", "wailsjsdir": "[自动生成的JS模块将被创建的目录的相对路径]",