Class NodeTasks.Builder

    • Constructor Detail

      • Builder

        public Builder​(Lookup lookup,
                       File npmFolder,
                       String buildDirectory)
        Create a builder instance given an specific npm folder.
        Parameters:
        lookup - a Lookup to discover services used by Flow (SPI)
        npmFolder - folder with the `package.json` file
        buildDirectory - 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 - a Lookup to discover services used by Flow (SPI)
        npmFolder - folder with the `package.json` file
        generatedPath - 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 - a Lookup to discover services used by Flow (SPI)
        npmFolder - folder with the `package.json` file
        generatedPath - folder where flow generated files will be placed.
        frontendDirectory - a directory with project's frontend files
        buildDirectory - 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, otherwise false
        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, otherwise false
        Returns:
        this builder
      • runNpmInstall

        public NodeTasks.Builder runNpmInstall​(boolean runNpmInstall)
        Sets whether run npm install after updating dependencies.
        Parameters:
        runNpmInstall - run npm install. Default is false
        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. Not null
        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 templates
        Returns:
        the builder
      • withEmbeddableWebComponents

        public NodeTasks.Builder withEmbeddableWebComponents​(boolean generateEmbeddableWebComponents)
        Sets whether to collect and package WebComponentExporter dependencies.
        Parameters:
        generateEmbeddableWebComponents - collect dependencies. Default is true
        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 - true to 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 if byteCodeScanner is true, full classpath scanner strategy is used otherwise (by default).
        Parameters:
        byteCodeScanner - if true 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 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, see FrontendTools.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.15.0".
        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, otherwise false
        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 target for maven and build 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 folder
        Returns:
        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 for
        Returns:
        the builder, for chaining
      • getFlowResourcesFolder

        public File getFlowResourcesFolder()