@24i/smartapps-bigscreen-rnv-build-engine 0.0.2-alpha.1367 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -50
- package/dist/src/index.js +1 -1
- package/dist/src/resolvers/resolveGenericRnvConfig.js +2 -2
- package/dist/src/resolvers/resolveZippedPlatformBuildsRelativeFilePath.js +3 -3
- package/dist/src/scripts/release/deployToAppCenter.js +4 -3
- package/dist/src/sdks/sdk-tizen/index.js +3 -4
- package/dist/src/sdks/sdk-webos/index.js +1 -2
- package/dist/src/tasks/task.rnv.build.js +4 -4
- package/dist/src/tasks/task.rnv.configureSoft.js +16 -15
- package/dist/src/tasks/task.rnv.hooks.run.js +12 -14
- package/dist/src/tasks/task.rnv.package.js +5 -5
- package/dist/src/tasks/task.rnv.project.configure.js +53 -54
- package/dist/templates/platforms/_shared/webpack.base.js +7 -6
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: README
|
|
3
|
-
title:
|
|
3
|
+
title: Rnv Build Engine
|
|
4
4
|
hide_title: true
|
|
5
5
|
sidebar_label: Rnv Build Engine
|
|
6
6
|
---
|
|
@@ -8,24 +8,23 @@ sidebar_label: Rnv Build Engine
|
|
|
8
8
|
# rnv-build-engine
|
|
9
9
|
|
|
10
10
|
> To **start a new project** with usage of our build process,
|
|
11
|
-
> please use [SmartApps BIGscreen Template repository](https://github.com/24i/smartapps-bigscreen-template),
|
|
11
|
+
> please use [SmartApps BIGscreen Template repository](https://github.com/24i/smartapps-bigscreen-template),
|
|
12
12
|
> it uses this package and has prepared other required configuration files as well.
|
|
13
13
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
## Table of Contents
|
|
15
|
+
- [About the package](#about-the-package)
|
|
16
|
+
- [Supported platforms](#supported-platforms)
|
|
17
|
+
- [Supported build schemes](#supported-build-schemes)
|
|
18
|
+
- [Available Webpack Injections](#available-webpack-injections)
|
|
19
|
+
- [Package content](#package-content)
|
|
20
|
+
- [How to set up new project with SmartApps BIGscreen build engine](#how-to-set-up-new-project-with-smartapps-bigscreen-build-engine)
|
|
20
21
|
|
|
21
22
|
---
|
|
22
|
-
|
|
23
|
-
## 1. About the package
|
|
23
|
+
## About the package
|
|
24
24
|
> Package for `SmartApps BIGscreen` projects, which needs **automated build and deploy process**.
|
|
25
25
|
|
|
26
|
-
Uses [ReNative](https://github.com/pavjacko/renative) -
|
|
27
|
-
|
|
28
|
-
to fulfill the needs of SmartApps BIGscreen projects.
|
|
26
|
+
Uses [ReNative](https://github.com/pavjacko/renative) - this package contains (not only) custom build engine for `ReNative`
|
|
27
|
+
which is used instead of core ReNative engine to fulfill the needs of SmartApps BIGscreen projects.
|
|
29
28
|
|
|
30
29
|
it
|
|
31
30
|
- **builds** applications for requested platforms
|
|
@@ -34,18 +33,35 @@ it
|
|
|
34
33
|
- sends **Slack notifications** for `release candidate` and `release` builds
|
|
35
34
|
- supports `Sentry.io` runtime **error logging**
|
|
36
35
|
|
|
37
|
-
## 2. Supported platforms
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
| **
|
|
45
|
-
| **
|
|
46
|
-
| **
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
---
|
|
38
|
+
## Supported platforms
|
|
39
|
+
|
|
40
|
+
| *Platform* | *Vendor* | *id* | *Build file extension* | *Registered file extensions* | *Note* |
|
|
41
|
+
| :--------- | :------: | :------: | :--------------------: | :-------------------------------: | :------------------------------: |
|
|
42
|
+
| **Entone** | Amino | `entone` | `.zip` | `*.entone.{js,jsx,ts,tsx,json}` | set-top boxes |
|
|
43
|
+
| **HbbTV** | N/A | `hbbtv` | `.zip` | `*.hbbtv.tv.{js,jsx,ts,tsx,json}` | |
|
|
44
|
+
| **Saphi** | Philips | `saphi` | `.zip` | `*.saphi.tv.{js,jsx,ts,tsx,json}` | |
|
|
45
|
+
| **Tizen** | Samsung | `tizen` | `.wgt` | `*.tizen.tv.{js,jsx,ts,tsx,json}` | |
|
|
46
|
+
| **webOS** | LG | `webos` | `.ipk` | `*.webos.tv.{js,jsx,ts,tsx,json}` | |
|
|
47
|
+
| **WebTV** | N/A | `webtv` | `.zip` | `*.webtv.{js,jsx,ts,tsx,json}` | for previewing builds in browser |
|
|
48
|
+
|
|
49
|
+
When building the application with ReNative, if file with ***registered platform extensinon*** is found,
|
|
50
|
+
it takes precedence and is bundled instead of file without registered file extension (such as `index.ts`).
|
|
51
|
+
For instance, this approach is useful (and is used) for platform drivers - only concrete driver can be bundled into the final package for selected platform:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
drivers/
|
|
55
|
+
index.ts // fallback when file with platform file extension for selected platform is not found
|
|
56
|
+
index.entone.ts // if build for entone platform is selected, this file will be picked for the build
|
|
57
|
+
index.hbbtv.tv.ts
|
|
58
|
+
index.saphi.tv.ts
|
|
59
|
+
index.tizen.tv.ts
|
|
60
|
+
index.webos.tv.ts
|
|
61
|
+
index.webtv.ts
|
|
62
|
+
```
|
|
63
|
+
---
|
|
64
|
+
## Supported build schemes
|
|
49
65
|
|
|
50
66
|
| *Scheme id* | *Build Environment* | *Usage* |
|
|
51
67
|
| :----------------- | :-----------------: | ------------------------------------------------------------- |
|
|
@@ -58,35 +74,75 @@ it
|
|
|
58
74
|
| **release:latest** | production | By CI on merge any pull request into `master` branch |
|
|
59
75
|
| **release:dist** | production | By CI on merge pull request into `master` branch |
|
|
60
76
|
|
|
61
|
-
###
|
|
77
|
+
### Schemes with `:latest` postfix
|
|
62
78
|
Scheme names with `:latest` postfix **always deploys into the same location**.
|
|
63
79
|
In other words, app url is the same for each deployed build.
|
|
64
80
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
An example:
|
|
82
|
+
```
|
|
83
|
+
http://smartapps-bigscreen.<PROJECT_NAME>.24imedia.com.s3.amazonaws.com/builds/<PLATFORM>/<FLAVOUR>/latest/dev/...
|
|
84
|
+
http://smartapps-bigscreen.<PROJECT_NAME>.24imedia.com.s3.amazonaws.com/builds/<PLATFORM>/<FLAVOUR>/latest/rc/...
|
|
85
|
+
http://smartapps-bigscreen.<PROJECT_NAME>.24imedia.com.s3.amazonaws.com/builds/<PLATFORM>/<FLAVOUR>/latest/release/...
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### `release:dist` scheme
|
|
89
|
+
The difference from [schemes with `:latest` postfix](#schemes-with-latest-postfix)
|
|
90
|
+
is that new builds are not deployed to the same remote folder all the time.
|
|
91
|
+
Instead, a new folder is created for each new app version.
|
|
92
|
+
|
|
93
|
+
An example:
|
|
94
|
+
```
|
|
95
|
+
http://smartapps-bigscreen.<PROJECT_NAME>.24imedia.com.s3.amazonaws.com/builds/<PLATFORM>/<FLAVOUR>/dist/v0.0.1/...
|
|
96
|
+
http://smartapps-bigscreen.<PROJECT_NAME>.24imedia.com.s3.amazonaws.com/builds/<PLATFORM>/<FLAVOUR>/dist/v0.0.2/...
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
## Available Webpack Injections
|
|
101
|
+
|
|
102
|
+
The build engine replaces pre-defined variables in project code with values at compile time.
|
|
103
|
+
|
|
104
|
+
Currently, following variable names are configured for replacing:
|
|
105
|
+
|
|
106
|
+
| *Variable Name* | *Type* | *Description* | *Examples* |
|
|
107
|
+
| :-------------------------------------------- | :----: | ------------------------------------------------------- | :-----------------------------------------: |
|
|
108
|
+
| **WEBPACK_INJECTION_APP_CONFIG_ID** | string | flavour id *(value of rnv CLI `-c` param value)* | `'animated_1080'`, `'basic_720'` |
|
|
109
|
+
| **WEBPACK_INJECTION_APP_CREATED** | string | build time in ISO 8601 format | `'2021-07-30T09:18:26.014Z'` |
|
|
110
|
+
| **WEBPACK_INJECTION_APP_RESOLUTION** | string | app resolution in `<WIDTH>x<HEIGHT>` format (in pixels) | `'1920x1080'`, `'1280x720'` |
|
|
111
|
+
| **WEBPACK_INJECTION_APP_VERSION** | string | app version | `'v0.0.1.dev'`, `'v0.0.1.rc-1'`, `'v0.0.1'` |
|
|
112
|
+
| **WEBPACK_INJECTION_APP_ENVIRONMENT** | string | environment used during the build | `'development'`, `'production'` |
|
|
113
|
+
| **WEBPACK_INJECTION_APP_PLATFORM** | string | platform id *(value of rnv CLI `-p` param value)* | `'webtv'`, `'webos'`, `'tizen'`, `'entone'` |
|
|
114
|
+
| **WEBPACK_INJECTION_APP_RUNTIME_CONFIG_PATH** | string | path to JSON app config, imported when app is starting | `'./public/content/conf/config.json'` |
|
|
68
115
|
|
|
69
|
-
|
|
116
|
+
An example:
|
|
117
|
+
```typescript
|
|
118
|
+
const appPlatform: string = WEBPACK_INJECTION_APP_PLATFORM;
|
|
70
119
|
|
|
71
|
-
|
|
72
|
-
|
|
120
|
+
// will be at compile time compiled to
|
|
121
|
+
const appPlatform = 'tizen'; // (or another platform id which is used for build);
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
## Package content
|
|
126
|
+
|
|
127
|
+
### npm dependenncies
|
|
128
|
+
All npm dependencies are listed in [package.json](package.json) file.
|
|
73
129
|
|
|
74
130
|
However, not all dependencies are directly bundled into a final npm package,
|
|
75
|
-
but
|
|
131
|
+
but they will be installed alongside this package into the project's `node_modules` folder.
|
|
76
132
|
|
|
77
|
-
Because of this, those npm dependencies don't have to be listed in custom project's `package.
|
|
78
|
-
and
|
|
133
|
+
Because of this, those npm dependencies don't have to be listed in custom project's `package.json` file
|
|
134
|
+
and can be updated only here - from one place.
|
|
79
135
|
With this approach, each individual project will use the same version of those dependencies,
|
|
80
136
|
which simplify the future dependencies update and reduce the amount of time spent with those updates.
|
|
81
137
|
|
|
82
|
-
####
|
|
138
|
+
#### ReNative npm dependencies
|
|
83
139
|
Firstly, the package contains main ReNative npm packages, namely:
|
|
84
140
|
|
|
85
141
|
- `renative`
|
|
86
142
|
- `renative-template-blank`
|
|
87
143
|
- `rnv`
|
|
88
144
|
|
|
89
|
-
####
|
|
145
|
+
#### npm dependencies related to custom ReNative build engine
|
|
90
146
|
Following dependencies are used in source code for custom build engine for ReNative:
|
|
91
147
|
|
|
92
148
|
- `@24i/smartapps-bigscreen-icon` *(generating SVG icons)*
|
|
@@ -95,7 +151,7 @@ Following dependencies are used in source code for custom build engine for ReNat
|
|
|
95
151
|
- `node-ssh` *(connection to HbbTV server)*
|
|
96
152
|
- `svgo` *(generating SVG icons)*
|
|
97
153
|
|
|
98
|
-
####
|
|
154
|
+
#### npm dependencies related to webpack
|
|
99
155
|
The package has also dependencies which are related to build the applications with webpack bundler, namely:
|
|
100
156
|
|
|
101
157
|
- `css-hot-loader`
|
|
@@ -114,17 +170,17 @@ The package has also dependencies which are related to build the applications wi
|
|
|
114
170
|
- `webpack-cli`
|
|
115
171
|
- `webpack-dev-server`
|
|
116
172
|
|
|
117
|
-
####
|
|
173
|
+
#### other npm dependencies
|
|
118
174
|
There are also dependencies on packages which may be listed in each custom project's dependencies.
|
|
119
|
-
However, as they are listed in this package, those npm dependencies don't need to be listed in custom project's `package.
|
|
120
|
-
and
|
|
175
|
+
However, as they are listed in this package, those npm dependencies don't need to be listed in custom project's `package.json` file
|
|
176
|
+
and can be updated only here - from one place.
|
|
121
177
|
|
|
122
178
|
- `core-js` *(polyfills collection)*
|
|
123
179
|
- `coveralls` *(detecting and reporting code coverage)*
|
|
124
180
|
- `raf` *(`requestAnimationFrame` polyfill)*
|
|
125
181
|
- `regenerator-runtime` *(runtime support for compiled/transpiled async functions.)*
|
|
126
182
|
|
|
127
|
-
###
|
|
183
|
+
### Custom build engine for ReNative
|
|
128
184
|
The package also contains our custom ReNative engine implementation.
|
|
129
185
|
It allows us to extend the number of platforms we build for
|
|
130
186
|
(core rnv engine supports only `Tizen` and `webOS` platforms for our purposes).
|
|
@@ -133,23 +189,24 @@ Using the custom engine allows us to change the build steps defined in core ReNa
|
|
|
133
189
|
Also, custom engine is prepared for deploying the built applications to `AWS S3` and to server specially configured for `HbbTV` builds.
|
|
134
190
|
Our custom build engine is also configured to deploy releases to `AppCenter.me`, `GitHub` and `Sentry`.
|
|
135
191
|
|
|
136
|
-
- added support for more platforms (see [supported platforms](#
|
|
192
|
+
- added support for more platforms (see [supported platforms](#supported-platforms))
|
|
137
193
|
- overwritten rnv tasks (such us `build`, `deploy`)
|
|
138
194
|
- added automatic installation of `Tizen` and `webOS` SDKs before building the packages
|
|
139
195
|
- deploy to `AWS S3`, `Appcenter.me`, `GitHub`, `Sentry`
|
|
140
|
-
- added support for `Slack` notifications for `release
|
|
196
|
+
- added support for `Slack` notifications for `release candidate` and `release` builds
|
|
141
197
|
|
|
142
|
-
Inside
|
|
143
|
-
Basically, it's copy-pasted code from core ReNative engine
|
|
198
|
+
Inside [src/tasks/](src/tasks) folder, there is a source code for **ReNative tasks** which overrides core ReNative tasks.
|
|
199
|
+
Basically, it's copy-pasted code from the core ReNative engine that has, in many cases, only a few lines changed and is rewritten into Typescript.
|
|
144
200
|
|
|
145
|
-
Inside
|
|
146
|
-
If any platform needs
|
|
201
|
+
Inside [templates/platforms/](templates/platforms) folder, there are **webpack configs** for each platform.
|
|
202
|
+
If any platform needs any **platform-specific files**, those can be found also in that location.
|
|
147
203
|
|
|
148
|
-
|
|
149
|
-
|
|
204
|
+
---
|
|
205
|
+
## How to set up new project with SmartApps BIGscreen build engine
|
|
206
|
+
There are a few things that are not included in the package and need to be added manually.
|
|
150
207
|
For example `renative.json` config file and `appConfigs` folder (both related to ReNative)
|
|
151
208
|
and `.travis.yml`config file (related to Travis CI).
|
|
152
209
|
|
|
153
210
|
> To **start a new project** with usage of our build process,
|
|
154
211
|
> please use [SmartApps BIGscreen Template repository](https://github.com/24i/smartapps-bigscreen-template),
|
|
155
|
-
> it uses this package and contains other required configuration files as well.
|
|
212
|
+
> it uses this package and contains other required configuration files as well.
|
package/dist/src/index.js
CHANGED
|
@@ -33,10 +33,10 @@ const generateEngineExtensions = (platformExtensions) => {
|
|
|
33
33
|
const fileExtensions = ['js', 'jsx', 'ts', 'tsx', 'json'];
|
|
34
34
|
const output = [];
|
|
35
35
|
fileExtensions.forEach((fileExtension) => {
|
|
36
|
-
output.push(fileExtension);
|
|
37
36
|
platformExtensions.forEach((platformExtension) => {
|
|
38
37
|
output.push(`${platformExtension}.${fileExtension}`);
|
|
39
38
|
});
|
|
39
|
+
output.push(fileExtension);
|
|
40
40
|
});
|
|
41
41
|
return output;
|
|
42
42
|
};
|
|
@@ -22,7 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
22
|
exports.getBaseConfig = exports.isObject = void 0;
|
|
23
23
|
const fs = __importStar(require("fs"));
|
|
24
24
|
const path = __importStar(require("path"));
|
|
25
|
-
const
|
|
25
|
+
const rnv_1 = require("rnv");
|
|
26
26
|
const replaceRelevantStringsInConfig_1 = require("../utils/replaceRelevantStringsInConfig");
|
|
27
27
|
function isObject(item) {
|
|
28
28
|
return (item && typeof item === 'object' && !Array.isArray(item));
|
|
@@ -52,7 +52,7 @@ const mergeFileJsonIntoObject = (filePath = '', targetObject = {}) => {
|
|
|
52
52
|
mergeDeep(targetObject, fileContentAsJSON);
|
|
53
53
|
};
|
|
54
54
|
const getBaseConfig = () => {
|
|
55
|
-
const c = ConfigManager.createRnvConfig({ ci: true }, process);
|
|
55
|
+
const c = rnv_1.ConfigManager.createRnvConfig({ ci: true }, process);
|
|
56
56
|
c.buildConfig = {};
|
|
57
57
|
const packageJsonfileContent = fs.readFileSync('package.json').toString();
|
|
58
58
|
c.files.project.package = JSON.parse(packageJsonfileContent);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveZippedPlatformBuildsRelativeFilePath = void 0;
|
|
4
|
-
const
|
|
4
|
+
const rnv_1 = require("rnv");
|
|
5
5
|
const resolveZippedPlatformBuildsRelativeFilePath = (c, platformName) => {
|
|
6
6
|
const { platformBuildsDir } = c.buildConfig.paths;
|
|
7
|
-
const appNameInFileName =
|
|
8
|
-
const buildVersion =
|
|
7
|
+
const appNameInFileName = rnv_1.Common.getConfigProp(c, platformName, 'appNameInFileName', '');
|
|
8
|
+
const buildVersion = rnv_1.Common.getConfigProp(c, platformName, 'packageVersion', '');
|
|
9
9
|
const zippedFilesParentDir = 'zipped_by_platform';
|
|
10
10
|
const fileExtension = 'zip';
|
|
11
11
|
const relativePathToDir = `${platformBuildsDir}/${zippedFilesParentDir}`;
|
|
@@ -22,7 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
22
22
|
exports.deployToAppCenter = void 0;
|
|
23
23
|
const child_process_1 = require("child_process");
|
|
24
24
|
const fs = __importStar(require("fs"));
|
|
25
|
-
const
|
|
25
|
+
const rnv_1 = require("rnv");
|
|
26
26
|
const resolvers_1 = require("../../resolvers");
|
|
27
27
|
const urlsMarkdown_1 = require("./urlsMarkdown");
|
|
28
28
|
const appCenterRelease = (params) => {
|
|
@@ -50,14 +50,15 @@ const getTokenByPlatform = (platformName = '') => {
|
|
|
50
50
|
return process.env[envVariableName] || '';
|
|
51
51
|
};
|
|
52
52
|
const processPlatform = (c, platformName) => {
|
|
53
|
+
const { getConfigProp } = rnv_1.Common;
|
|
53
54
|
const appCenterConfig = getAppCenterConfigByPlatformName(c, platformName);
|
|
54
55
|
if (!appCenterConfig)
|
|
55
56
|
return;
|
|
56
57
|
const { appName } = appCenterConfig;
|
|
57
58
|
const token = getTokenByPlatform(platformName);
|
|
58
59
|
const zipPath = resolvers_1.resolveZippedPlatformBuildsRelativeFilePath(c, platformName);
|
|
59
|
-
const buildVersion =
|
|
60
|
-
const releaseNotesPath =
|
|
60
|
+
const buildVersion = getConfigProp(c, platformName, 'packageVersion', '');
|
|
61
|
+
const releaseNotesPath = getConfigProp(c, platformName, 'releaseNotes', {}).relativePath || '';
|
|
61
62
|
if (!appName || !token || !releaseNotesPath || !zipPath || !buildVersion)
|
|
62
63
|
return;
|
|
63
64
|
const tempReleaseNotesPath = `RELEASE_NOTES_APPCENTER_${platformName.toUpperCase()}.md`;
|
|
@@ -26,14 +26,13 @@ const os = __importStar(require("os"));
|
|
|
26
26
|
const semver = __importStar(require("semver"));
|
|
27
27
|
const child_process_1 = require("child_process");
|
|
28
28
|
const rnv_1 = require("rnv");
|
|
29
|
-
const installer_1 = require("rnv/dist/core/sdkManager/installer");
|
|
30
29
|
const sdkUtils_1 = require("../sdkUtils");
|
|
31
30
|
const { execCLI } = rnv_1.Exec;
|
|
32
31
|
const { CLI_TIZEN, REMOTE_DEBUGGER_ENABLED_PLATFORMS } = rnv_1.Constants;
|
|
33
32
|
const { getPlatformProjectDir, getAppVersion, getConfigProp, checkPortInUse, confirmActiveBundler, addSystemInjects, } = rnv_1.Common;
|
|
34
33
|
const { chalk, logTask, logDebug, logError, logSuccess, logWarning, logInfo, } = rnv_1.Logger;
|
|
35
34
|
const { isPlatformActive } = rnv_1.PlatformManager;
|
|
36
|
-
const { writeCleanFile, fsExistsSync } = rnv_1.FileUtils;
|
|
35
|
+
const { writeCleanFile, fsExistsSync, updateObjectSync } = rnv_1.FileUtils;
|
|
37
36
|
const { buildCoreWebpackProject, runWebpackServer, configureCoreWebProject, waitForWebpack, } = rnv_1.WebpackUtils;
|
|
38
37
|
const { copyAssetsFolder, copyBuildsFolder } = rnv_1.ProjectManager;
|
|
39
38
|
const { runTizenSimOrDevice, createDevelopTizenCertificate, DEFAULT_CERTIFICATE_NAME, DEFAULT_SECURITY_PROFILE_NAME, } = rnv_1.SDKManager.Tizen;
|
|
@@ -203,7 +202,7 @@ const setTizenCertificate = (c) => {
|
|
|
203
202
|
tizen: { certificateProfile: TIZEN_SECURITY_PROFILE_NAME },
|
|
204
203
|
},
|
|
205
204
|
};
|
|
206
|
-
|
|
205
|
+
updateObjectSync(rnvWorkspaceConfigPath, customObjectToMerge);
|
|
207
206
|
Object.assign(c.buildConfig, customObjectToMerge);
|
|
208
207
|
return true;
|
|
209
208
|
};
|
|
@@ -234,7 +233,7 @@ const handleTizenSdk = async (c) => {
|
|
|
234
233
|
}
|
|
235
234
|
}
|
|
236
235
|
}
|
|
237
|
-
await
|
|
236
|
+
await rnv_1.SDKManager.Installer.checkAndConfigureTizenSdks(c);
|
|
238
237
|
setTizenCertificate(c);
|
|
239
238
|
};
|
|
240
239
|
exports.handleTizenSdk = handleTizenSdk;
|
|
@@ -25,7 +25,6 @@ const path = __importStar(require("path"));
|
|
|
25
25
|
const semver = __importStar(require("semver"));
|
|
26
26
|
const os_1 = require("os");
|
|
27
27
|
const rnv_1 = require("rnv");
|
|
28
|
-
const installer_1 = require("rnv/dist/core/sdkManager/installer");
|
|
29
28
|
const sdkUtils_1 = require("../sdkUtils");
|
|
30
29
|
const { writeCleanFile } = rnv_1.FileUtils;
|
|
31
30
|
const { execCLI } = rnv_1.Exec;
|
|
@@ -158,6 +157,6 @@ const handleWebosSdk = async (c) => {
|
|
|
158
157
|
await sdkUtils_1.registerSdkPath(c, rnvSdkKey, sdkInstalledToPath);
|
|
159
158
|
}
|
|
160
159
|
}
|
|
161
|
-
await
|
|
160
|
+
await rnv_1.SDKManager.Installer.checkAndConfigureWebosSdks(c);
|
|
162
161
|
};
|
|
163
162
|
exports.handleWebosSdk = handleWebosSdk;
|
|
@@ -23,10 +23,10 @@ exports.customRnvBuildTask = void 0;
|
|
|
23
23
|
const child_process_1 = require("child_process");
|
|
24
24
|
const fs = __importStar(require("fs"));
|
|
25
25
|
const rnv_1 = require("rnv");
|
|
26
|
-
const common_1 = require("rnv/dist/core/common");
|
|
27
26
|
const constants_1 = require("../constants");
|
|
28
27
|
const sdks_1 = require("../sdks");
|
|
29
28
|
const resolvers_1 = require("../resolvers");
|
|
29
|
+
const { getConfigProp, getPlatformBuildDir, getPlatformProjectDir } = rnv_1.Common;
|
|
30
30
|
const { logErrorPlatform } = rnv_1.PlatformManager;
|
|
31
31
|
const { logTask } = rnv_1.Logger;
|
|
32
32
|
const { buildWeb } = sdks_1.SDKWebpack;
|
|
@@ -64,18 +64,18 @@ const getBuildVersionForFileName = (c) => {
|
|
|
64
64
|
};
|
|
65
65
|
const makeBuildName = (c) => {
|
|
66
66
|
const platformName = c.platform;
|
|
67
|
-
const appNameInFileName =
|
|
67
|
+
const appNameInFileName = getConfigProp(c, platformName, 'appNameInFileName', '');
|
|
68
68
|
const buildVersion = getBuildVersionForFileName(c);
|
|
69
69
|
const appConfigId = c.runtime.appId || '';
|
|
70
70
|
const extension = getPackageExtensionByPlatform(platformName);
|
|
71
71
|
return `${appNameInFileName}_${platformName}_${buildVersion}_${appConfigId}.${extension}`;
|
|
72
72
|
};
|
|
73
73
|
const makeZipOutput = (c) => {
|
|
74
|
-
const platformBuildDir =
|
|
74
|
+
const platformBuildDir = getPlatformBuildDir(c);
|
|
75
75
|
const copiedProjectBuildDir = `${platformBuildDir}/build`;
|
|
76
76
|
const defaultZipFileName = `${c.platform}_${c.runtime.appId}.zip`;
|
|
77
77
|
const fileName = makeBuildName(c) || defaultZipFileName;
|
|
78
|
-
child_process_1.execSync(`cp -r ${
|
|
78
|
+
child_process_1.execSync(`cp -r ${getPlatformProjectDir(c)}/public ${copiedProjectBuildDir}`);
|
|
79
79
|
child_process_1.execSync(`rm -rf ${platformBuildDir}/output`);
|
|
80
80
|
child_process_1.execSync(`mkdir ${platformBuildDir}/output`);
|
|
81
81
|
child_process_1.execSync(`zip -r ../output/${fileName} *`, { cwd: copiedProjectBuildDir });
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.customRnvConfigureSoftTask = void 0;
|
|
4
|
-
const
|
|
4
|
+
const rnv_1 = require("rnv");
|
|
5
5
|
const schemeParser_1 = require("rnv/dist/core/configManager/schemeParser");
|
|
6
|
-
const platformManager_1 = require("rnv/dist/core/platformManager");
|
|
7
|
-
const runtimeManager_1 = require("rnv/dist/core/runtimeManager");
|
|
8
|
-
const taskManager_1 = require("rnv/dist/core/taskManager");
|
|
9
|
-
const constants_1 = require("rnv/dist/core/constants");
|
|
10
|
-
const installer_1 = require("rnv/dist/core/sdkManager/installer");
|
|
11
6
|
const replaceRelevantStringsInConfig_1 = require("../utils/replaceRelevantStringsInConfig");
|
|
7
|
+
const { logTask } = rnv_1.Logger;
|
|
8
|
+
const { isPlatformSupported } = rnv_1.PlatformManager;
|
|
9
|
+
const { configureRuntimeDefaults } = rnv_1.RuntimeManager;
|
|
10
|
+
const { executeTask } = rnv_1.TaskManager;
|
|
11
|
+
const { TASK_APP_CONFIGURE, TASK_CONFIGURE_SOFT, PARAMS } = rnv_1.Constants;
|
|
12
|
+
const { checkSdk } = rnv_1.SDKManager.Installer;
|
|
12
13
|
const configureSoftFn = async (c, parentTask, originTask) => {
|
|
13
|
-
|
|
14
|
-
await
|
|
15
|
-
await
|
|
16
|
-
await
|
|
14
|
+
logTask('taskRnvConfigureSoft');
|
|
15
|
+
await configureRuntimeDefaults(c);
|
|
16
|
+
await executeTask(c, TASK_APP_CONFIGURE, parentTask, originTask);
|
|
17
|
+
await isPlatformSupported(c);
|
|
17
18
|
await schemeParser_1.isBuildSchemeSupported(c);
|
|
18
|
-
await
|
|
19
|
-
await
|
|
19
|
+
await checkSdk(c);
|
|
20
|
+
await configureRuntimeDefaults(c);
|
|
20
21
|
replaceRelevantStringsInConfig_1.replaceRelevantStringsInConfig(c);
|
|
21
22
|
return true;
|
|
22
23
|
};
|
|
23
24
|
const customRnvConfigureSoftTask = {
|
|
24
|
-
description: 'Configure system and project
|
|
25
|
+
description: 'Configure system and project without recreating files (used for --only)',
|
|
25
26
|
fn: configureSoftFn,
|
|
26
|
-
task:
|
|
27
|
-
params:
|
|
27
|
+
task: TASK_CONFIGURE_SOFT,
|
|
28
|
+
params: PARAMS.withBase(),
|
|
28
29
|
platforms: [],
|
|
29
30
|
};
|
|
30
31
|
exports.customRnvConfigureSoftTask = customRnvConfigureSoftTask;
|
|
@@ -21,18 +21,19 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.customRnvHooksRunTask = void 0;
|
|
23
23
|
const inquirer = __importStar(require("inquirer"));
|
|
24
|
-
const
|
|
24
|
+
const rnv_1 = require("rnv");
|
|
25
25
|
const buildHooks_1 = require("rnv/dist/core/projectManager/buildHooks");
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
26
|
+
const { logTask, logInfo } = rnv_1.Logger;
|
|
27
|
+
const { executeTask } = rnv_1.TaskManager;
|
|
28
|
+
const { fsExistsSync } = rnv_1.FileUtils;
|
|
29
|
+
const { TASK_HOOKS_RUN, TASK_PROJECT_CONFIGURE, PARAMS, PARAM_KEYS } = rnv_1.Constants;
|
|
29
30
|
const hooksRunFn = async (c, parentTask, originTask) => {
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
await
|
|
31
|
+
logTask('taskRnvHooksRun');
|
|
32
|
+
if (fsExistsSync(c.paths.project.config)) {
|
|
33
|
+
await executeTask(c, TASK_PROJECT_CONFIGURE, TASK_HOOKS_RUN, originTask);
|
|
33
34
|
}
|
|
34
35
|
else {
|
|
35
|
-
|
|
36
|
+
logInfo('Your are running your buildHook outside of renative project');
|
|
36
37
|
}
|
|
37
38
|
await buildHooks_1.buildHooks(c);
|
|
38
39
|
if (!c.buildHooks) {
|
|
@@ -40,10 +41,7 @@ const hooksRunFn = async (c, parentTask, originTask) => {
|
|
|
40
41
|
}
|
|
41
42
|
let hookName = c.program?.exeMethod;
|
|
42
43
|
let showHookList = false;
|
|
43
|
-
if (!hookName || hookName === true) {
|
|
44
|
-
showHookList = true;
|
|
45
|
-
}
|
|
46
|
-
else if (!c.buildHooks[hookName]) {
|
|
44
|
+
if (!hookName || hookName === true || !c.buildHooks[hookName]) {
|
|
47
45
|
showHookList = true;
|
|
48
46
|
}
|
|
49
47
|
if (showHookList) {
|
|
@@ -62,8 +60,8 @@ const hooksRunFn = async (c, parentTask, originTask) => {
|
|
|
62
60
|
const customRnvHooksRunTask = {
|
|
63
61
|
description: 'Run specific build hook',
|
|
64
62
|
fn: hooksRunFn,
|
|
65
|
-
task:
|
|
66
|
-
params:
|
|
63
|
+
task: TASK_HOOKS_RUN,
|
|
64
|
+
params: PARAMS.withBase([PARAM_KEYS.exeMethod]),
|
|
67
65
|
platforms: [],
|
|
68
66
|
skipAppConfig: true,
|
|
69
67
|
skipPlatforms: true,
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.customRnvPackageTask = void 0;
|
|
4
4
|
const rnv_1 = require("rnv");
|
|
5
|
-
const common_1 = require("rnv/dist/core/common");
|
|
6
|
-
const fileutils_1 = require("rnv/dist/core/systemManager/fileutils");
|
|
7
|
-
const resolve_1 = require("rnv/dist/core/systemManager/resolve");
|
|
8
|
-
const utils_1 = require("rnv/dist/core/systemManager/utils");
|
|
9
5
|
const constants_1 = require("../constants");
|
|
6
|
+
const { getConfigProp } = rnv_1.Common;
|
|
7
|
+
const { configureFilesystem } = rnv_1.FileUtils;
|
|
8
|
+
const { doResolve } = rnv_1.Resolver;
|
|
9
|
+
const { isSystemWin } = rnv_1.Utils;
|
|
10
10
|
const { logTask } = rnv_1.Logger;
|
|
11
11
|
const { TASK_PACKAGE, TASK_CONFIGURE, PARAMS } = rnv_1.Constants;
|
|
12
12
|
const { executeOrSkipTask } = rnv_1.TaskManager;
|
|
13
13
|
const packageFn = async (c, parentTask, originTask) => {
|
|
14
14
|
logTask('taskRnvPackage', `parent:${parentTask}`);
|
|
15
|
-
|
|
15
|
+
configureFilesystem(getConfigProp, doResolve, isSystemWin);
|
|
16
16
|
await executeOrSkipTask(c, TASK_CONFIGURE, TASK_PACKAGE, originTask);
|
|
17
17
|
return true;
|
|
18
18
|
};
|
|
@@ -21,93 +21,92 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.customRnvProjectConfigureTask = void 0;
|
|
23
23
|
const path = __importStar(require("path"));
|
|
24
|
-
const
|
|
25
|
-
const logger_1 = require("rnv/dist/core/systemManager/logger");
|
|
26
|
-
const configManager_1 = require("rnv/dist/core/configManager");
|
|
27
|
-
const runtimeManager_1 = require("rnv/dist/core/runtimeManager");
|
|
28
|
-
const templateManager_1 = require("rnv/dist/core/templateManager");
|
|
29
|
-
const fileutils_1 = require("rnv/dist/core/systemManager/fileutils");
|
|
24
|
+
const rnv_1 = require("rnv");
|
|
30
25
|
const crypto_1 = require("rnv/dist/core/systemManager/crypto");
|
|
31
|
-
const migrator_1 = require("rnv/dist/core/projectManager/migrator");
|
|
32
|
-
const constants_1 = require("rnv/dist/core/constants");
|
|
33
|
-
const projectManager_1 = require("rnv/dist/core/projectManager");
|
|
34
|
-
const engineManager_1 = require("rnv/dist/core/engineManager");
|
|
35
|
-
const taskManager_1 = require("rnv/dist/core/taskManager");
|
|
36
26
|
const replaceRelevantStringsInConfig_1 = require("../utils/replaceRelevantStringsInConfig");
|
|
27
|
+
const { configurePlugins, overrideTemplatePlugins, resolvePluginDependants, } = rnv_1.PluginManager;
|
|
28
|
+
const { chalk, logTask, logInfo } = rnv_1.Logger;
|
|
29
|
+
const { checkIsRenativeProject, generateRuntimeConfig } = rnv_1.ConfigManager;
|
|
30
|
+
const { updateRenativeConfigs, configureRuntimeDefaults } = rnv_1.RuntimeManager;
|
|
31
|
+
const { applyTemplate, checkIfTemplateConfigured, configureTemplateFiles, isTemplateInstalled, } = rnv_1.TemplateManager;
|
|
32
|
+
const { fsExistsSync, fsMkdirSync } = rnv_1.FileUtils;
|
|
33
|
+
const { TASK_INSTALL, TASK_PROJECT_CONFIGURE, TASK_TEMPLATE_APPLY, TASK_APP_CONFIGURE, TASK_WORKSPACE_CONFIGURE, PARAMS, } = rnv_1.Constants;
|
|
34
|
+
const { checkAndCreateBabelConfig, copyRuntimeAssets, cleanPlaformAssets, checkAndCreateGitignore, versionCheck, } = rnv_1.ProjectManager;
|
|
35
|
+
const { configureEngines, getEngineRunnerByPlatform } = rnv_1.EngineManager;
|
|
36
|
+
const { executeTask, initializeTask, findSuitableTask } = rnv_1.TaskManager;
|
|
37
37
|
const patchEngineTemplatesPath = (c) => {
|
|
38
38
|
const templatesPath = path.join(process.cwd(), 'node_modules', '@24i', 'smartapps-bigscreen-rnv-build-engine', 'dist', 'templates');
|
|
39
|
-
const engine =
|
|
39
|
+
const engine = getEngineRunnerByPlatform(c, c.platform);
|
|
40
40
|
engine.originalTemplatePlatformsDir = path.join(templatesPath, 'platforms');
|
|
41
41
|
engine.originalTemplateAssetsDir = path.join(templatesPath, 'assets');
|
|
42
42
|
engine.originalTemplatePlatformProjectDir = path.join(templatesPath, 'platforms', 'project');
|
|
43
43
|
c.paths.project.platformTemplatesDirs[c.platform] = engine.originalTemplatePlatformsDir;
|
|
44
44
|
};
|
|
45
45
|
const projectConfigureFn = async (c, parentTask, originTask) => {
|
|
46
|
-
|
|
46
|
+
logTask('taskRnvProjectConfigure');
|
|
47
47
|
patchEngineTemplatesPath(c);
|
|
48
|
-
if (c.paths.project.builds.dir && !
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
if (c.paths.project.builds.dir && !fsExistsSync(c.paths.project.builds.dir)) {
|
|
49
|
+
logInfo(`Creating folder ${c.paths.project.builds.dir} ...DONE`);
|
|
50
|
+
fsMkdirSync(c.paths.project.builds.dir);
|
|
51
51
|
}
|
|
52
|
-
await
|
|
53
|
-
await
|
|
54
|
-
await
|
|
55
|
-
await taskManager_1.executeTask(c, constants_1.TASK_WORKSPACE_CONFIGURE, constants_1.TASK_PROJECT_CONFIGURE, originTask);
|
|
52
|
+
await updateRenativeConfigs(c);
|
|
53
|
+
await checkIsRenativeProject(c);
|
|
54
|
+
await executeTask(c, TASK_WORKSPACE_CONFIGURE, TASK_PROJECT_CONFIGURE, originTask);
|
|
56
55
|
if (c.program.only && !!parentTask) {
|
|
57
|
-
await
|
|
58
|
-
await
|
|
59
|
-
await
|
|
56
|
+
await configureRuntimeDefaults(c);
|
|
57
|
+
await executeTask(c, TASK_APP_CONFIGURE, TASK_PROJECT_CONFIGURE, originTask);
|
|
58
|
+
await generateRuntimeConfig(c);
|
|
60
59
|
return true;
|
|
61
60
|
}
|
|
62
|
-
await
|
|
63
|
-
await
|
|
61
|
+
await checkIfTemplateConfigured(c);
|
|
62
|
+
await executeTask(c, TASK_INSTALL, TASK_PROJECT_CONFIGURE, originTask);
|
|
64
63
|
await crypto_1.checkCrypto(c, parentTask, originTask);
|
|
65
|
-
await
|
|
66
|
-
if (originTask !==
|
|
67
|
-
if (c.runtime.requiresBootstrap || !
|
|
68
|
-
await
|
|
69
|
-
|
|
70
|
-
const taskInstance = await
|
|
64
|
+
await configureRuntimeDefaults(c);
|
|
65
|
+
if (originTask !== TASK_TEMPLATE_APPLY) {
|
|
66
|
+
if (c.runtime.requiresBootstrap || !isTemplateInstalled(c)) {
|
|
67
|
+
await applyTemplate(c);
|
|
68
|
+
logInfo('Your template has been bootstrapped. RESTARTING...DONE');
|
|
69
|
+
const taskInstance = await findSuitableTask(c);
|
|
71
70
|
c.runtime.requiresBootstrap = false;
|
|
72
|
-
return
|
|
71
|
+
return initializeTask(c, taskInstance.task);
|
|
73
72
|
}
|
|
74
|
-
await
|
|
75
|
-
await
|
|
76
|
-
await
|
|
77
|
-
await
|
|
78
|
-
await
|
|
79
|
-
await
|
|
80
|
-
await
|
|
81
|
-
await
|
|
82
|
-
await
|
|
73
|
+
await applyTemplate(c);
|
|
74
|
+
await configureRuntimeDefaults(c);
|
|
75
|
+
await executeTask(c, TASK_INSTALL, TASK_PROJECT_CONFIGURE, originTask);
|
|
76
|
+
await executeTask(c, TASK_APP_CONFIGURE, TASK_PROJECT_CONFIGURE, originTask);
|
|
77
|
+
await versionCheck(c);
|
|
78
|
+
await configureEngines(c);
|
|
79
|
+
await resolvePluginDependants(c);
|
|
80
|
+
await configurePlugins(c);
|
|
81
|
+
await configureRuntimeDefaults(c);
|
|
83
82
|
if (!c.runtime.disableReset) {
|
|
84
83
|
if (c.program.resetHard) {
|
|
85
|
-
|
|
86
|
-
await
|
|
84
|
+
logInfo(`You passed ${chalk().white('-R, --resetHard')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
|
|
85
|
+
await cleanPlaformAssets(c);
|
|
87
86
|
}
|
|
88
87
|
else if (c.program.resetAssets) {
|
|
89
|
-
|
|
90
|
-
await
|
|
88
|
+
logInfo(`You passed ${chalk().white('-a, --resetAssets')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
|
|
89
|
+
await cleanPlaformAssets(c);
|
|
91
90
|
}
|
|
92
91
|
}
|
|
93
|
-
await
|
|
94
|
-
await
|
|
95
|
-
await
|
|
96
|
-
await
|
|
92
|
+
await copyRuntimeAssets(c);
|
|
93
|
+
await configureTemplateFiles(c);
|
|
94
|
+
await checkAndCreateGitignore(c);
|
|
95
|
+
await checkAndCreateBabelConfig(c);
|
|
97
96
|
if (!c.buildConfig.platforms) {
|
|
98
|
-
await
|
|
97
|
+
await updateRenativeConfigs(c);
|
|
99
98
|
}
|
|
100
99
|
replaceRelevantStringsInConfig_1.replaceRelevantStringsInConfig(c);
|
|
101
|
-
await
|
|
102
|
-
await
|
|
100
|
+
await generateRuntimeConfig(c);
|
|
101
|
+
await overrideTemplatePlugins(c);
|
|
103
102
|
}
|
|
104
103
|
return true;
|
|
105
104
|
};
|
|
106
105
|
const customRnvProjectConfigureTask = {
|
|
107
106
|
description: 'Configure current project',
|
|
108
107
|
fn: projectConfigureFn,
|
|
109
|
-
task:
|
|
110
|
-
params:
|
|
108
|
+
task: TASK_PROJECT_CONFIGURE,
|
|
109
|
+
params: PARAMS.withBase(),
|
|
111
110
|
platforms: [],
|
|
112
111
|
};
|
|
113
112
|
exports.customRnvProjectConfigureTask = customRnvProjectConfigureTask;
|
|
@@ -140,13 +140,14 @@ function generateConfig(config) {
|
|
|
140
140
|
? '@24i/smartapps-bigscreen-device'
|
|
141
141
|
: '@24i/smartapps-bigscreen-device/resolver',
|
|
142
142
|
};
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
const { moduleAliases } = config;
|
|
144
|
+
if (moduleAliases) {
|
|
145
|
+
Object.keys(moduleAliases).forEach((key) => {
|
|
146
|
+
if (typeof moduleAliases[key] === 'string') {
|
|
147
|
+
aliases[key] = moduleAliases[key];
|
|
147
148
|
}
|
|
148
|
-
else {
|
|
149
|
-
aliases[key] = path_1.default.resolve(projectDir,
|
|
149
|
+
else if (moduleAliases[key].projectPath) {
|
|
150
|
+
aliases[key] = path_1.default.resolve(projectDir, moduleAliases[key].projectPath);
|
|
150
151
|
}
|
|
151
152
|
});
|
|
152
153
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@24i/smartapps-bigscreen-rnv-build-engine",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Package with build engine for SmartApps
|
|
3
|
+
"version": "0.8.5",
|
|
4
|
+
"description": "Package with build engine for SmartApps BIGscreen projects...",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build:clean": "rm -rf dist",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"core-js": "3.15.2",
|
|
24
24
|
"coveralls": "3.1.1",
|
|
25
25
|
"css-hot-loader": "1.4.4",
|
|
26
|
-
"css-loader": "5.2.
|
|
26
|
+
"css-loader": "5.2.7",
|
|
27
27
|
"file-loader": "6.2.0",
|
|
28
28
|
"filemanager-webpack-plugin": "3.1.1",
|
|
29
29
|
"fork-ts-checker-webpack-plugin": "6.2.12",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"renative": "0.32.0-alpha.43",
|
|
38
38
|
"renative-template-blank": "0.32.0-alpha.43",
|
|
39
39
|
"rnv": "0.32.0-alpha.43",
|
|
40
|
-
"sass": "1.
|
|
40
|
+
"sass": "1.37.0",
|
|
41
41
|
"sass-loader": "10.1.1",
|
|
42
42
|
"source-map-loader": "1.1.3",
|
|
43
43
|
"svgo": "1.3.2",
|
|
@@ -47,8 +47,10 @@
|
|
|
47
47
|
"webpack-dev-server": "3.11.2"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
+
"@types/inquirer": "7.3.3",
|
|
50
51
|
"@types/mini-css-extract-plugin": "1.2.2",
|
|
51
52
|
"@types/node": "16.3.1",
|
|
53
|
+
"@types/semver": "7.3.8",
|
|
52
54
|
"@types/ssh2": "0.5.47",
|
|
53
55
|
"@types/tapable": "1.0.6",
|
|
54
56
|
"@types/webpack": "4.41.26"
|
|
@@ -59,5 +61,5 @@
|
|
|
59
61
|
"keywords": [],
|
|
60
62
|
"author": "24i",
|
|
61
63
|
"license": "ISC",
|
|
62
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "d7a6600d9d06a70defedf4be6e2a5648a620c9ca"
|
|
63
65
|
}
|