com.vaadin.flow.server.frontend.
Class NodeTasks.Builder
- java.lang.Object
-
- com.vaadin.flow.server.frontend.NodeTasks.Builder
-
All Implemented Interfaces:
Enclosing class:
public static class NodeTasks.Builder extends Object implements Serializable
Build a
NodeExecutor
instance.See Also:
-
-
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 generatedPath
Builder(Lookup lookup, File npmFolder, String buildDirectory)
Create a builder instance given an specific npm folder.
-
Method Summary
All Methods Modifier and Type Method Description NodeTasks
build()
Creates a
NodeExecutor
using this configuration.NodeTasks.Builder
copyLocalResources(File localResourcesFolder)
Set local frontend files to be copied from given folder.
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.
NodeTasks.Builder
copyTemplates(boolean copyTemplates)
Sets whether copy templates to
META-INF/VAADIN/config/templates
.NodeTasks.Builder
createMissingPackageJson(boolean create)
Sets whether to create the package file if missing.
NodeTasks.Builder
enableImportsUpdate(boolean enableImportsUpdate)
Sets whether to enable imports file update.
NodeTasks.Builder
enablePackagesUpdate(boolean enablePackagesUpdate)
Sets whether to enable packages and webpack file updates.
NodeTasks.Builder
enablePnpm(boolean enable)
Enables pnpm tool.
String
getBuildDirectory()
Get the name of the used build directory.
protected FeatureFlags
getFeatureFlags()
File
getFlowResourcesFolder()
File
getFrontendDirectory()
Get the defined frontend directory.
File
getGeneratedFolder()
Get the generated folder for this build.
File
getNpmFolder()
Get the npm folder used for this build.
File
getWebappResourcesDirectory()
Get the output directory for webpack output.
NodeTasks.Builder
populateTokenFileData(elemental.json.JsonObject object)
Fill token file data into the provided
object
.NodeTasks.Builder
runNpmInstall(boolean runNpmInstall)
Sets whether run
npm install
after updating dependencies.NodeTasks.Builder
setJavaResourceFolder(File javaResourceFolder)
Set the java resources folder to be checked for feature file.
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.
NodeTasks.Builder
useByteCodeScanner(boolean byteCodeScanner)
Sets frontend scanner strategy: byte code scanning strategy is used if
byteCodeScanner
istrue
, full classpath scanner strategy is used otherwise (by default).NodeTasks.Builder
useGlobalPnpm(boolean useGlobalPnpm)
Uses globally installed pnpm tool for frontend packages installation.
NodeTasks.Builder
useV14Bootstrap(boolean useDeprecatedV14Bootstrapping)
Use V14 bootstrapping that disables index.html entry point.
NodeTasks.Builder
withApplicationProperties(File applicationProperties)
Set application properties file for Spring project.
NodeTasks.Builder
withEmbeddableWebComponents(boolean generateEmbeddableWebComponents)
Sets whether to collect and package
WebComponentExporter
dependencies.NodeTasks.Builder
withEndpointGeneratedOpenAPIFile(File endpointGeneratedOpenAPIFile)
Set output location for the generated OpenAPI file.
NodeTasks.Builder
withEndpointSourceFolder(File endpointSourceFolder)
Set source paths that OpenAPI generator searches for endpoints.
NodeTasks.Builder
withFlowResourcesFolder(File flowResourcesFolder)
Sets the appropriate npm package folder for copying flow resources in jars.
NodeTasks.Builder
withFrontendGeneratedFolder(File frontendGeneratedFolder)
Set the folder where frontend files should be generated.
NodeTasks.Builder
withHomeNodeExecRequired(boolean requireHomeNodeExec)
Requires node executable to be installed in vaadin home folder.
NodeTasks.Builder
withNodeDownloadRoot(URI nodeDownloadRoot)
Sets the download node.js URL.
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"
.NodeTasks.Builder
withPostinstallPackages(List<String> postinstallPackages)
Sets the additional npm packages to run
postinstall
for.NodeTasks.Builder
withProductionMode(boolean productionMode)
Sets the production mode.
NodeTasks.Builder
withTokenFile(File tokenFile)
Sets the token file (flow-build-info.json) path.
NodeTasks.Builder
withWebpack(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
- aLookup
to 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
- aLookup
to 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
- aLookup
to 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 a
NodeExecutor
using this configuration.Returns:
a
NodeExecutor
instance
-
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 is
true
.Parameters:
enablePackagesUpdate
-true
to enable packages and webpack update, otherwisefalse
Returns:
this builder
-
enableImportsUpdate
public NodeTasks.Builder enableImportsUpdate(boolean enableImportsUpdate)
Sets whether to enable imports file update. Default is
false
. This will also enable creation of missing package files if set to true.Parameters:
enableImportsUpdate
-true
to enable imports file update, otherwisefalse
Returns:
this builder
-
runNpmInstall
public NodeTasks.Builder runNpmInstall(boolean runNpmInstall)
Sets whether run
npm install
after 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 folderReturns:
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 to
META-INF/VAADIN/config/templates
.Parameters:
copyTemplates
- whether to copy templatesReturns:
the builder
-
withEmbeddableWebComponents
public NodeTasks.Builder withEmbeddableWebComponents(boolean generateEmbeddableWebComponents)
Sets whether to collect and package
WebComponentExporter
dependencies.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 packageReturns:
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 fromReturns:
the builder, for chaining
-
useV14Bootstrap
public NodeTasks.Builder useV14Bootstrap(boolean useDeprecatedV14Bootstrapping)
Use V14 bootstrapping that disables index.html entry point.
Parameters:
useDeprecatedV14Bootstrapping
-true
to use legacy V14 bootstrappingReturns:
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 folderReturns:
the builder, for chaining
-
useByteCodeScanner
public NodeTasks.Builder useByteCodeScanner(boolean byteCodeScanner)
Sets frontend scanner strategy: byte code scanning strategy is used if
byteCodeScanner
istrue
, full classpath scanner strategy is used otherwise (by default).Parameters:
byteCodeScanner
- iftrue
then 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 provided
object
.Parameters:
object
- the object to fill with token file dataReturns:
the builder, for chaining
-
withTokenFile
public NodeTasks.Builder withTokenFile(File tokenFile)
Sets the token file (flow-build-info.json) path.
Parameters:
tokenFile
- token file pathReturns:
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 execReturns:
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.18.1".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 to
NodeInstaller.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
-true
to 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 usedReturns:
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
target
for maven andbuild
for 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 folderReturns:
this builder
-
getFeatureFlags
protected FeatureFlags getFeatureFlags()
-
withPostinstallPackages
public NodeTasks.Builder withPostinstallPackages(List<String> postinstallPackages)
Sets the additional npm packages to run
postinstall
for.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 forReturns:
the builder, for chaining
-
getFlowResourcesFolder
public File getFlowResourcesFolder()
-
-