Package com.vaadin.flow.server.frontend
Class NodeTasks.Builder
- java.lang.Object
-
- com.vaadin.flow.server.frontend.NodeTasks.Builder
-
- All Implemented Interfaces:
Serializable
- Enclosing class:
- NodeTasks
public static class NodeTasks.Builder extends Object implements Serializable
Build aNodeExecutorinstance.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Builder(Lookup lookup, File npmFolder, File generatedPath, File frontendDirectory, String buildDirectory)Create a builder instance with all parameters.Builder(Lookup lookup, File npmFolder, File generatedPath, String buildDirectory)Create a builder instance with custom npmFolder and generatedPathBuilder(Lookup lookup, File npmFolder, String buildDirectory)Create a builder instance given an specific npm folder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description NodeTasksbuild()Creates aNodeExecutorusing this configuration.NodeTasks.BuildercopyLocalResources(File localResourcesFolder)Set local frontend files to be copied from given folder.NodeTasks.BuildercopyResources(Set<File> jars)Sets whether copy resources from classpath to the appropriate npm package folder so as they are available for webpack build.NodeTasks.BuildercopyTemplates(boolean copyTemplates)Sets whether copy templates toMETA-INF/VAADIN/config/templates.NodeTasks.BuildercreateMissingPackageJson(boolean create)Sets whether to create the package file if missing.NodeTasks.BuilderenableImportsUpdate(boolean enableImportsUpdate)Sets whether to enable imports file update.NodeTasks.BuilderenablePackagesUpdate(boolean enablePackagesUpdate)Sets whether to enable packages and webpack file updates.NodeTasks.BuilderenablePnpm(boolean enable)Enables pnpm tool.StringgetBuildDirectory()Get the name of the used build directory.protected FeatureFlagsgetFeatureFlags()FilegetFlowResourcesFolder()FilegetFrontendDirectory()Get the defined frontend directory.FilegetGeneratedFolder()Get the generated folder for this build.FilegetNpmFolder()Get the npm folder used for this build.FilegetWebappResourcesDirectory()Get the output directory for webpack output.NodeTasks.BuilderpopulateTokenFileData(elemental.json.JsonObject object)Fill token file data into the providedobject.NodeTasks.BuilderrunNpmInstall(boolean runNpmInstall)Sets whether runnpm installafter updating dependencies.NodeTasks.BuildersetJavaResourceFolder(File javaResourceFolder)Set the java resources folder to be checked for feature file.NodeTasks.BuildersetNodeAutoUpdate(boolean update)Sets whether it is fine to automatically update the alternate node installation if installed version is older than the current default.NodeTasks.BuilderuseByteCodeScanner(boolean byteCodeScanner)Sets frontend scanner strategy: byte code scanning strategy is used ifbyteCodeScanneristrue, full classpath scanner strategy is used otherwise (by default).NodeTasks.BuilderuseGlobalPnpm(boolean useGlobalPnpm)Uses globally installed pnpm tool for frontend packages installation.NodeTasks.BuilderuseV14Bootstrap(boolean useDeprecatedV14Bootstrapping)Use V14 bootstrapping that disables index.html entry point.NodeTasks.BuilderwithApplicationProperties(File applicationProperties)Set application properties file for Spring project.NodeTasks.BuilderwithEmbeddableWebComponents(boolean generateEmbeddableWebComponents)Sets whether to collect and packageWebComponentExporterdependencies.NodeTasks.BuilderwithEndpointGeneratedOpenAPIFile(File endpointGeneratedOpenAPIFile)Set output location for the generated OpenAPI file.NodeTasks.BuilderwithEndpointSourceFolder(File endpointSourceFolder)Set source paths that OpenAPI generator searches for endpoints.NodeTasks.BuilderwithFlowResourcesFolder(File flowResourcesFolder)Sets the appropriate npm package folder for copying flow resources in jars.NodeTasks.BuilderwithFrontendGeneratedFolder(File frontendGeneratedFolder)Set the folder where frontend files should be generated.NodeTasks.BuilderwithHomeNodeExecRequired(boolean requireHomeNodeExec)Requires node executable to be installed in vaadin home folder.NodeTasks.BuilderwithNodeDownloadRoot(URI nodeDownloadRoot)Sets the download node.js URL.NodeTasks.BuilderwithNodeVersion(String nodeVersion)Sets the node.js version to be used when node.js is installed automatically by Vaadin, for example"v16.0.0".NodeTasks.BuilderwithPostinstallPackages(List<String> postinstallPackages)Sets the additional npm packages to runpostinstallfor.NodeTasks.BuilderwithProductionMode(boolean productionMode)Sets the production mode.NodeTasks.BuilderwithTokenFile(File tokenFile)Sets the token file (flow-build-info.json) path.NodeTasks.BuilderwithWebpack(File webappResourcesDirectory, File resourceOutputDirectory)Sets the webpack related properties.
-
-
-
Constructor Detail
-
Builder
public Builder(Lookup lookup, File npmFolder, String buildDirectory)
Create a builder instance given an specific npm folder.- Parameters:
lookup- aLookupto discover services used by Flow (SPI)npmFolder- folder with the `package.json` filebuildDirectory- project build directory
-
Builder
public Builder(Lookup lookup, File npmFolder, File generatedPath, String buildDirectory)
Create a builder instance with custom npmFolder and generatedPath- Parameters:
lookup- aLookupto discover services used by Flow (SPI)npmFolder- folder with the `package.json` filegeneratedPath- folder where flow generated files will be placed.buildDirectory- project build directory
-
Builder
public Builder(Lookup lookup, File npmFolder, File generatedPath, File frontendDirectory, String buildDirectory)
Create a builder instance with all parameters.- Parameters:
lookup- aLookupto discover services used by Flow (SPI)npmFolder- folder with the `package.json` filegeneratedPath- folder where flow generated files will be placed.frontendDirectory- a directory with project's frontend filesbuildDirectory- project build directory
-
-
Method Detail
-
build
public NodeTasks build()
Creates aNodeExecutorusing this configuration.- Returns:
- a
NodeExecutorinstance
-
withWebpack
public NodeTasks.Builder withWebpack(File webappResourcesDirectory, File resourceOutputDirectory)
Sets the webpack related properties.- Parameters:
webappResourcesDirectory- the directory to set for webpack to output its build results, meant for serving from context root.resourceOutputDirectory- the directory to output generated non-served resources, such as the "config/stats.json" stats file, and the "config/flow-build-info.json" token file.- Returns:
- this builder
-
enablePackagesUpdate
public NodeTasks.Builder enablePackagesUpdate(boolean enablePackagesUpdate)
Sets whether to enable packages and webpack file updates. Default istrue.- Parameters:
enablePackagesUpdate-trueto enable packages and webpack update, otherwisefalse- Returns:
- this builder
-
enableImportsUpdate
public NodeTasks.Builder enableImportsUpdate(boolean enableImportsUpdate)
Sets whether to enable imports file update. Default isfalse. This will also enable creation of missing package files if set to true.- Parameters:
enableImportsUpdate-trueto enable imports file update, otherwisefalse- Returns:
- this builder
-
runNpmInstall
public NodeTasks.Builder runNpmInstall(boolean runNpmInstall)
Sets whether runnpm installafter updating dependencies.- Parameters:
runNpmInstall- run npm install. Default isfalse- Returns:
- the builder
-
withFlowResourcesFolder
public NodeTasks.Builder withFlowResourcesFolder(File flowResourcesFolder)
Sets the appropriate npm package folder for copying flow resources in jars.- Parameters:
flowResourcesFolder- target folder- Returns:
- the builder
-
copyResources
public NodeTasks.Builder copyResources(Set<File> jars)
Sets whether copy resources from classpath to the appropriate npm package folder so as they are available for webpack build.- Parameters:
jars- set of class nodes to be visited. Notnull- Returns:
- the builder
-
copyTemplates
public NodeTasks.Builder copyTemplates(boolean copyTemplates)
Sets whether copy templates toMETA-INF/VAADIN/config/templates.- Parameters:
copyTemplates- whether to copy templates- Returns:
- the builder
-
withEmbeddableWebComponents
public NodeTasks.Builder withEmbeddableWebComponents(boolean generateEmbeddableWebComponents)
Sets whether to collect and packageWebComponentExporterdependencies.- Parameters:
generateEmbeddableWebComponents- collect dependencies. Default istrue- Returns:
- the builder
-
createMissingPackageJson
public NodeTasks.Builder createMissingPackageJson(boolean create)
Sets whether to create the package file if missing.- Parameters:
create- create the package- Returns:
- the builder
-
copyLocalResources
public NodeTasks.Builder copyLocalResources(File localResourcesFolder)
Set local frontend files to be copied from given folder.- Parameters:
localResourcesFolder- folder to copy local frontend files from- Returns:
- the builder, for chaining
-
useV14Bootstrap
public NodeTasks.Builder useV14Bootstrap(boolean useDeprecatedV14Bootstrapping)
Use V14 bootstrapping that disables index.html entry point.- Parameters:
useDeprecatedV14Bootstrapping-trueto use legacy V14 bootstrapping- Returns:
- the builder, for chaining
-
withFrontendGeneratedFolder
public NodeTasks.Builder withFrontendGeneratedFolder(File frontendGeneratedFolder)
Set the folder where frontend files should be generated.- Parameters:
frontendGeneratedFolder- folder to generate frontend files in.- Returns:
- the builder, for chaining
-
withApplicationProperties
public NodeTasks.Builder withApplicationProperties(File applicationProperties)
Set application properties file for Spring project.- Parameters:
applicationProperties- application properties file.- Returns:
- this builder, for chaining
-
withEndpointGeneratedOpenAPIFile
public NodeTasks.Builder withEndpointGeneratedOpenAPIFile(File endpointGeneratedOpenAPIFile)
Set output location for the generated OpenAPI file.- Parameters:
endpointGeneratedOpenAPIFile- the generated output file.- Returns:
- the builder, for chaining
-
withEndpointSourceFolder
public NodeTasks.Builder withEndpointSourceFolder(File endpointSourceFolder)
Set source paths that OpenAPI generator searches for endpoints.- Parameters:
endpointSourceFolder- java source folder- Returns:
- the builder, for chaining
-
useByteCodeScanner
public NodeTasks.Builder useByteCodeScanner(boolean byteCodeScanner)
Sets frontend scanner strategy: byte code scanning strategy is used ifbyteCodeScanneristrue, full classpath scanner strategy is used otherwise (by default).- Parameters:
byteCodeScanner- iftruethen byte code scanner is used, full scanner is used otherwise (by default).- Returns:
- the builder, for chaining
-
populateTokenFileData
public NodeTasks.Builder populateTokenFileData(elemental.json.JsonObject object)
Fill token file data into the providedobject.- Parameters:
object- the object to fill with token file data- Returns:
- the builder, for chaining
-
withTokenFile
public NodeTasks.Builder withTokenFile(File tokenFile)
Sets the token file (flow-build-info.json) path.- Parameters:
tokenFile- token file path- Returns:
- the builder, for chaining
-
enablePnpm
public NodeTasks.Builder enablePnpm(boolean enable)
Enables pnpm tool."pnpm" will be used instead of "npm".
- Parameters:
enable- enables pnpm.- Returns:
- the builder, for chaining
-
useGlobalPnpm
public NodeTasks.Builder useGlobalPnpm(boolean useGlobalPnpm)
Uses globally installed pnpm tool for frontend packages installation.- Parameters:
useGlobalPnpm- uses globally installed pnpm instead of default one, seeFrontendTools.DEFAULT_PNPM_VERSION.- Returns:
- the builder, for chaining
-
withHomeNodeExecRequired
public NodeTasks.Builder withHomeNodeExecRequired(boolean requireHomeNodeExec)
Requires node executable to be installed in vaadin home folder.- Parameters:
requireHomeNodeExec- requires vaadin home node exec- Returns:
- the builder, for chaining
-
withNodeVersion
public NodeTasks.Builder withNodeVersion(String nodeVersion)
Sets the node.js version to be used when node.js is installed automatically by Vaadin, for example"v16.0.0". Defaults to "v16.14.2".- Parameters:
nodeVersion- the new node version to download, not null.- Returns:
- the builder, for chaining
-
withNodeDownloadRoot
public NodeTasks.Builder withNodeDownloadRoot(URI nodeDownloadRoot)
Sets the download node.js URL. Handy in heavily firewalled corporate environments where the node.js download can be provided from an intranet mirror. Defaults toNodeInstaller.DEFAULT_NODEJS_DOWNLOAD_ROOT.- Parameters:
nodeDownloadRoot- the new download URL to set, not null.- Returns:
- the builder, for chaining
-
withProductionMode
public NodeTasks.Builder withProductionMode(boolean productionMode)
Sets the production mode.- Parameters:
productionMode-trueto enable production mode, otherwisefalse- Returns:
- this builder
-
setNodeAutoUpdate
public NodeTasks.Builder setNodeAutoUpdate(boolean update)
Sets whether it is fine to automatically update the alternate node installation if installed version is older than the current default.- Parameters:
update- true to update alternate node when used- Returns:
- the builder
-
getNpmFolder
public File getNpmFolder()
Get the npm folder used for this build.- Returns:
- npmFolder
-
getGeneratedFolder
public File getGeneratedFolder()
Get the generated folder for this build.- Returns:
- generatedFolder
-
getWebappResourcesDirectory
public File getWebappResourcesDirectory()
Get the output directory for webpack output.- Returns:
- webpackOutputDirectory
-
getFrontendDirectory
public File getFrontendDirectory()
Get the defined frontend directory.- Returns:
- frontendDirectory
-
getBuildDirectory
public String getBuildDirectory()
Get the name of the used build directory.By default this will be
targetfor maven andbuildfor gradle.- Returns:
- buildDirectory
-
setJavaResourceFolder
public NodeTasks.Builder setJavaResourceFolder(File javaResourceFolder)
Set the java resources folder to be checked for feature file.Needed for plugin execution.
- Parameters:
javaResourceFolder- java resources folder- Returns:
- this builder
-
getFeatureFlags
protected FeatureFlags getFeatureFlags()
-
withPostinstallPackages
public NodeTasks.Builder withPostinstallPackages(List<String> postinstallPackages)
Sets the additional npm packages to runpostinstallfor.By default, postinstall is only run for internal dependencies which rely on post install scripts to work, e.g. esbuild
- Parameters:
postinstallPackages- the additional npm packages to run postinstall for- Returns:
- the builder, for chaining
-
getFlowResourcesFolder
public File getFlowResourcesFolder()
-
-