public class FrontendUtils extends Object
Modifier and Type | Class and Description |
---|---|
static class |
FrontendUtils.UnknownVersionException
Thrown when detecting the version of a tool fails.
|
Modifier and Type | Field and Description |
---|---|
static String |
CHUNKS
A key in a Json object for chunks list.
|
static String |
CSS_IMPORTS
A key in a Json object for css imports data.
|
static String |
DEAULT_FLOW_RESOURCES_FOLDER
Default folder for copying front-end resources present in the classpath
jars.
|
static String |
DEFAULT_CONNECT_APPLICATION_PROPERTIES
Default application properties file path in Connect project.
|
static String |
DEFAULT_CONNECT_GENERATED_TS_DIR
Default generated path for generated TS files.
|
static String |
DEFAULT_CONNECT_JAVA_SOURCE_FOLDER
Default Java source folder for OpenAPI generator.
|
static String |
DEFAULT_CONNECT_OPENAPI_JSON_FILE
Default generated path for OpenAPI spec file.
|
static String |
DEFAULT_FRONTEND_DIR
Path of the folder containing application frontend source files, it needs
to be relative to the
DEFAULT_NODE_DIR
By default it is /frontend in the project folder. |
static String |
DEFAULT_GENERATED_DIR
Default folder name for flow generated stuff relative to the
TARGET . |
static String |
DEFAULT_NODE_DIR
Default folder for the node related content.
|
protected static String |
DEFAULT_PNPM_VERSION |
static String |
DISABLE_CHECK |
static String |
EXPORT_CHUNK
The entry-point key used for the exported bundle.
|
static String |
FALLBACK
A key in a Json object for fallback chunk.
|
static String |
FALLBACK_IMPORTS_NAME
Name of the file that contains all application imports, javascript, theme
and style annotations which are not discovered by the current scanning
strategy (but they are in the project classpath).
|
static String |
FLOW_NPM_PACKAGE_NAME
The NPM package name that will be used for the javascript files present
in jar resources that will to be copied to the npm folder so as they are
accessible to webpack.
|
static String |
FRONTEND
Default folder used for source and generated folders.
|
static String |
GREEN |
static String |
IMPORTS_D_TS_NAME
The TypeScript definitions for the
IMPORTS_NAME
file. |
static String |
IMPORTS_NAME
Name of the file that contains application imports, javascript, theme and
style annotations.
|
static String |
INDEX_HTML
File name of the index.html in client side.
|
static String |
INDEX_JS
File name of the index.js in client side.
|
static String |
INDEX_TS
File name of the index.ts in client side.
|
static String |
INSTALL_NODE_LOCALLY |
static String |
JS_MODULES
A key in a Json object for js modules data.
|
static String |
NODE_MODULES
Location for the installed node packages.
|
static String |
PARAM_FRONTEND_DIR
A parameter for overriding the
DEFAULT_FRONTEND_DIR
folder. |
static String |
PARAM_GENERATED_DIR
A parameter for overriding the
DEFAULT_GENERATED_DIR folder. |
static String |
PARAM_IGNORE_VERSION_CHECKS
Set to
true to ignore node/npm tool version checks. |
static String |
PARAM_TOKEN_FILE
A parameter informing about the location of the
TOKEN_FILE . |
static String |
PROJECT_BASEDIR |
static String |
RED |
static String |
TARGET
Default target folder for the java project.
|
static String |
TOKEN_FILE
File used to enable npm mode.
|
static String |
WEBPACK_CONFIG
The name of the webpack configuration file.
|
static String |
WEBPACK_GENERATED
The name of the webpack generated configuration file.
|
static String |
WEBPACK_PREFIX_ALIAS
A special prefix used by webpack to map imports placed in the
DEFAULT_FRONTEND_DIR . |
static String |
YELLOW |
Modifier and Type | Method and Description |
---|---|
static String |
commandToString(String baseDir,
List<String> command)
Pretty prints a command line order.
|
static void |
console(String format,
Object message)
Intentionally send to console instead to log, useful when executing
external processes.
|
static ProcessBuilder |
createProcessBuilder(List<String> command)
Creates a process builder for the given list of program and arguments.
|
static void |
ensurePnpm(String baseDir)
Ensure that pnpm tool is available and install it if it's not.
|
static List<String> |
getBowerExecutable(String baseDir)
Locate
bower executable. |
static String |
getIndexHtmlContent(VaadinService service)
Gets the content of the
frontend/index.html file which is
served by webpack-dev-server in dev-mode and read from classpath in
production mode. |
static String |
getNodeExecutable(String baseDir)
Locate
node executable. |
static List<String> |
getNpmExecutable(String baseDir)
Locate
npm executable. |
static String |
getOsName()
Get the Operating System name from the
os.name system property. |
static List<String> |
getPnpmExecutable(String baseDir)
Locate
pnpm executable. |
static List<String> |
getPnpmExecutable(String baseDir,
boolean failOnAbsence)
Locate
pnpm executable if it's possible. |
static String |
getProjectFrontendDir(DeploymentConfiguration configuration)
Get directory where project's frontend files are located.
|
static String |
getStatsAssetsByChunkName(VaadinService service)
Load the asset chunks from stats.json.
|
static String |
getStatsContent(VaadinService service)
Gets the content of the
stats.json file produced by webpack. |
static String |
getStatsHash(VaadinService service)
Get the latest has for the stats file in development mode.
|
static String |
getUnixPath(Path source)
Get path as a String in Unix form.
|
static String |
getUnixRelativePath(Path source,
Path target)
Get relative path from a source path to a target path in Unix form.
|
static boolean |
isWebpackConfigFile(File file)
Checks whether the
file is a webpack configuration file with the
expected content (includes a configuration generated by Flow). |
static boolean |
isWindows()
Check if the current os is Windows.
|
static FallbackChunk |
readFallbackChunk(elemental.json.JsonObject object)
Read fallback chunk data from a json object.
|
static String |
streamToString(InputStream inputStream)
Read a stream and copy the content in a String.
|
static void |
validateNodeAndNpmVersion(String baseDir)
Validate that the found node and npm versions are new enough.
|
protected static final String DEFAULT_PNPM_VERSION
public static final String PROJECT_BASEDIR
public static final String DEFAULT_NODE_DIR
Constants.PACKAGE_JSON
, WEBPACK_CONFIG
,
NODE_MODULES
.
By default it's the project root folder.public static final String NODE_MODULES
NODE_PATH
.public static final String FRONTEND
public static final String DEFAULT_FRONTEND_DIR
DEFAULT_NODE_DIR
By default it is /frontend
in the project folder.public static final String WEBPACK_CONFIG
public static final String WEBPACK_GENERATED
public static final String TARGET
public static final String FLOW_NPM_PACKAGE_NAME
public static final String DEAULT_FLOW_RESOURCES_FOLDER
public static final String DEFAULT_GENERATED_DIR
TARGET
.public static final String IMPORTS_NAME
DEFAULT_GENERATED_DIR
folder.public static final String IMPORTS_D_TS_NAME
IMPORTS_NAME
file.public static final String INDEX_HTML
public static final String INDEX_TS
public static final String INDEX_JS
public static final String DEFAULT_CONNECT_JAVA_SOURCE_FOLDER
public static final String DEFAULT_CONNECT_APPLICATION_PROPERTIES
public static final String DEFAULT_CONNECT_OPENAPI_JSON_FILE
public static final String DEFAULT_CONNECT_GENERATED_TS_DIR
public static final String FALLBACK_IMPORTS_NAME
IMPORTS_NAME
file. It
is always generated in the DEFAULT_GENERATED_DIR
folder.public static final String PARAM_GENERATED_DIR
DEFAULT_GENERATED_DIR
folder.public static final String PARAM_FRONTEND_DIR
DEFAULT_FRONTEND_DIR
folder.public static final String PARAM_IGNORE_VERSION_CHECKS
true
to ignore node/npm tool version checks.public static final String WEBPACK_PREFIX_ALIAS
DEFAULT_FRONTEND_DIR
. e.g.
import 'Frontend/foo.js';
references the
filefrontend/foo.js
.public static final String TOKEN_FILE
public static final String EXPORT_CHUNK
public static final String CHUNKS
public static final String FALLBACK
public static final String CSS_IMPORTS
public static final String JS_MODULES
public static final String PARAM_TOKEN_FILE
TOKEN_FILE
.public static final String INSTALL_NODE_LOCALLY
public static final String DISABLE_CHECK
public static final String YELLOW
public static final String RED
public static final String GREEN
public static String getOsName()
os.name
system property.public static boolean isWindows()
public static String getNodeExecutable(String baseDir)
node
executable.baseDir
- project root folder.public static List<String> getNpmExecutable(String baseDir)
npm
executable.baseDir
- project root folder.public static List<String> getPnpmExecutable(String baseDir)
pnpm
executable.
In case pnpm is not available it will be installed.
baseDir
- project root folder.getPnpmExecutable(String, boolean)
public static List<String> getPnpmExecutable(String baseDir, boolean failOnAbsence)
pnpm
executable if it's possible.
In case the tool is not found either IllegalStateException
is
thrown or an empty list is returned depending on failOnAbsence
value.
baseDir
- project root folder.failOnAbsence
- if true
throws IllegalStateException if tool is not
found, if false
return an empty list if tool is not
foundpublic static List<String> getBowerExecutable(String baseDir)
bower
executable.
An empty list is returned if bower is not found
baseDir
- project root folder.public static String streamToString(InputStream inputStream)
inputStream
- the input streampublic static ProcessBuilder createProcessBuilder(List<String> command)
command
- a list with the program and argumentspublic static String getStatsContent(VaadinService service) throws IOException
stats.json
file produced by webpack.service
- the vaadin service.IOException
- on error reading stats file.public static String getIndexHtmlContent(VaadinService service) throws IOException
frontend/index.html
file which is
served by webpack-dev-server in dev-mode and read from classpath in
production mode. NOTE: In dev mode, the file content file is fetched via
webpack http request. So that we don't need to have a separate
index.html's content watcher, auto-reloading will work automatically,
like other files managed by webpack in `frontend/` folder.service
- the vaadin serviceIOException
- on error when reading filepublic static String getStatsHash(VaadinService service) throws IOException
In production mode and disabled dev server mode an empty string is returned.
service
- the Vaadin service.IOException
- if an I/O error occurs while creating the input stream.public static String getStatsAssetsByChunkName(VaadinService service) throws IOException
service
- the Vaadin service.null
if stats.json not found or content not found.IOException
- if an I/O error occurs while creating the input stream.public static void validateNodeAndNpmVersion(String baseDir)
baseDir
- project root folder.public static void ensurePnpm(String baseDir)
baseDir
- project root folder.public static String getProjectFrontendDir(DeploymentConfiguration configuration)
configuration
- the current deployment configurationDEFAULT_FRONTEND_DIR
or value of
PARAM_FRONTEND_DIR
if it is set.public static boolean isWebpackConfigFile(File file) throws IOException
file
is a webpack configuration file with the
expected content (includes a configuration generated by Flow).file
- a file to checktrue
iff the file exists and includes a generated
configurationIOException
- if an I/O error occurs while reading the filepublic static String getUnixRelativePath(Path source, Path target)
source
- the source pathtarget
- the target pathpublic static String getUnixPath(Path source)
source
- path to getpublic static FallbackChunk readFallbackChunk(elemental.json.JsonObject object)
object
- json object to read fallback chunk datapublic static String commandToString(String baseDir, List<String> command)
baseDir
- the current directorycommand
- the command and it's argumentsCopyright © 2020. All rights reserved.