com.vaadin.flow.server.frontend.

Class FrontendTools


  • public class FrontendTools
    extends Object

    Provides access to frontend tools (node.js and npm, pnpm) and optionally installs the tools if needed.

    WARNING: This class is intended for internal usage only. May be renamed or removed in a future release.

    Author:

    Vaadin Ltd

    • Constructor Detail

      • FrontendTools

        public FrontendTools(String baseDir,
                             Supplier<String> alternativeDirGetter,
                             boolean forceAlternativeNode)

        Creates an instance of the class using the baseDir as a base directory to locate the tools and the directory returned by the alternativeDirGetter as a directory to install tools if they are not found and use it as an alternative tools location.

        If alternativeDir is null tools won't be installed.

        Parameters:

        baseDir - the base directory to locate the tools, not null

        alternativeDirGetter - the getter for a directory where tools will be installed if they are not found globally or in the baseDir, may be null

        forceAlternativeNode - force usage of node executable from alternative directory

      • FrontendTools

        public FrontendTools(String baseDir,
                             Supplier<String> alternativeDirGetter)

        Creates an instance of the class using the baseDir as a base directory to locate the tools and the directory returned by the alternativeDirGetter as a directory to install tools if they are not found and use it as an alternative tools location.

        If alternativeDir is null tools won't be installed.

        Parameters:

        baseDir - the base directory to locate the tools, not null

        alternativeDirGetter - the getter for a directory where tools will be installed if they are not found globally or in the baseDir, may be null

      • FrontendTools

        public FrontendTools(String baseDir,
                             Supplier<String> alternativeDirGetter,
                             String nodeVersion,
                             URI nodeDownloadRoot,
                             boolean forceAlternativeNode)

        Creates an instance of the class using the baseDir as a base directory to locate the tools and the directory returned by the alternativeDirGetter as a directory to install tools if they are not found and use it as an alternative tools location.

        If alternativeDir is null tools won't be installed.

        Parameters:

        baseDir - the base directory to locate the tools, not null

        alternativeDirGetter - the getter for a directory where tools will be installed if they are not found globally or in the baseDir, may be null

        nodeVersion - The node.js version to be used when node.js is installed automatically by Vaadin, for example "v16.0.0". Use "v16.3.0" by default.

        nodeDownloadRoot - Download node.js from this URL. Handy in heavily firewalled corporate environments where the node.js download can be provided from an intranet mirror. Use NodeInstaller.DEFAULT_NODEJS_DOWNLOAD_ROOT by default.

        forceAlternativeNode - force usage of node executable from alternative directory

      • FrontendTools

        public FrontendTools(String baseDir,
                             Supplier<String> alternativeDirGetter,
                             String nodeVersion,
                             URI nodeDownloadRoot)

        Creates an instance of the class using the baseDir as a base directory to locate the tools and the directory returned by the alternativeDirGetter as a directory to install tools if they are not found and use it as an alternative tools location.

        If alternativeDir is null tools won't be installed.

        Parameters:

        baseDir - the base directory to locate the tools, not null

        alternativeDirGetter - the getter for a directory where tools will be installed if they are not found globally or in the baseDir, may be null

        nodeVersion - The node.js version to be used when node.js is installed automatically by Vaadin, for example "v16.0.0". Use "v16.3.0" by default.

        nodeDownloadRoot - Download node.js from this URL. Handy in heavily firewalled corporate environments where the node.js download can be provided from an intranet mirror. Use NodeInstaller.DEFAULT_NODEJS_DOWNLOAD_ROOT by default.

    • Method Detail

      • getNodeExecutable

        public String getNodeExecutable()

        Locate node executable.

        Returns:

        the full path to the executable

      • forceAlternativeNodeExecutable

        public String forceAlternativeNodeExecutable()

        Locate node executable from the alternative directory given.

        The difference between getNodeExecutable() and this method in a search algorithm: getNodeExecutable() first searches executable in the base/alternative directory and fallbacks to the globally installed if it's not found there. The forceAlternativeNodeExecutable() doesn't search for globally installed executable. It tries to find it in the installation directory and if it's not found it downloads and installs it there.

        Returns:

        the full path to the executable

        See Also:

        getNodeExecutable()

      • getNpmExecutable

        public List<String> getNpmExecutable()

        Locate npm executable.

        Returns:

        the list of all commands in sequence that need to be executed to have npm running

      • getPnpmExecutable

        public List<String> getPnpmExecutable()

        Locate pnpm executable.

        In case pnpm is not available it will be installed.

        Returns:

        the list of all commands in sequence that need to be executed to have pnpm running

      • validateNodeAndNpmVersion

        public void validateNodeAndNpmVersion()

        Validate that the found node and npm versions are new enough. Throws an exception with a descriptive message if a version is too old.

      • installNode

        protected String installNode(String nodeVersion,
                                     URI downloadRoot)

        Install node and npm.

        Parameters:

        nodeVersion - node version to install

        downloadRoot - optional download root for downloading node. May be a filesystem file or a URL see NodeInstaller.setNodeDownloadRoot(URI).

        Returns:

        node installation path

      • getProxies

        protected List<ProxyConfig.Proxy> getProxies()

        Read list of configured proxies in order from system properties, .npmrc file in the project root folder, .npmrc file in user root folder and system environment variables.

        Returns:

        list of configured proxies