@infomaximum/package-cli 1.6.1 → 1.7.0
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/CHANGELOG.md +7 -0
- package/README.md +23 -13
- package/dist/configs/webpack/buildPa/321/201kage.js +20 -5
- package/dist/configs/webpack/common.js +2 -2
- package/dist/configs/webpack/sections/plugins/zipWidget.js +3 -2
- package/dist/const.js +3 -0
- package/dist/paths.js +3 -2
- package/dist/scripts/widget/build.js +3 -2
- package/dist/scripts/widget/init/actions.js +3 -3
- package/dist/templates/widget/src/widgetIndex.js +2 -1
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [1.7.0](https://github.com/Infomaximum/package-cli/compare/v1.6.1...v1.7.0) (2023-12-04)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* удаление лишних файлов после сборки пакета ([db79fdd](https://github.com/Infomaximum/package-cli/commit/db79fdd1e15f94961b383ca2295a3eddbd32516a))
|
|
11
|
+
|
|
5
12
|
### [1.6.1](https://github.com/Infomaximum/package-cli/compare/v1.6.0...v1.6.1) (2023-12-04)
|
|
6
13
|
|
|
7
14
|
|
package/README.md
CHANGED
|
@@ -6,25 +6,35 @@ Package-cli - предоставляет разработчикам набор
|
|
|
6
6
|
<img alt="npm" src="https://img.shields.io/npm/v/@infomaximum/package-cli?style=for-the-badge">
|
|
7
7
|
</a>
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Инициализация проекта
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
yarn add -D @infomaximum/package-cli
|
|
13
|
-
```
|
|
11
|
+
Для создания нового пакета с виджетом необходимо выполнить следующую команду:
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
`npx @infomaximum/package-cli widget init my_widget`
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
После выполнения данной команды будет создан шаблонный проект **my_widget** и инициализирован git репозиторий.
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
yarn im-package-cli widget build --entry ./src/index.tsx
|
|
21
|
-
```
|
|
17
|
+
## Разработка виджета
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
Для разработки виджета нужно выполнить команду:
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
`yarn build:dev`
|
|
22
|
+
|
|
23
|
+
Данная команда выполняет сборку пакета для разработки. Далее, пакет (собранный архив из папки build) необходимо загрузить в систему. Для этого добавляем пакет в маркетплейс либо в пространство, а так же добавляем разрабатываемый виджет на холст (дашбординг).
|
|
24
|
+
|
|
25
|
+
Затем необходимо запустить сервер разработки следующей командой:
|
|
26
|
+
|
|
27
|
+
`yarn start`
|
|
28
|
+
|
|
29
|
+
В результате будет запущен сервер отслеживающий изменения проекта и выполняющий горячую перезагрузку разрабатываемого компонента.
|
|
30
|
+
|
|
31
|
+
## Сборка пакета
|
|
32
|
+
|
|
33
|
+
Для того чтобы пользователи имели возможность использовать разработанный вами виджет, необходимо выполнить сборку пакета, для этого выполняем команду:
|
|
34
|
+
|
|
35
|
+
`yarn build`
|
|
36
|
+
|
|
37
|
+
Полученный в результате выполнения данной команды пакет можно загрузить в маркетплейс.
|
|
28
38
|
|
|
29
39
|
## Вывод всех доступных команд
|
|
30
40
|
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import ZipPlugin from "zip-webpack-plugin";
|
|
2
|
+
import RemovePlugin from "remove-files-webpack-plugin";
|
|
2
3
|
import CopyWebpackPlugin from "copy-webpack-plugin";
|
|
3
4
|
import path from "path";
|
|
4
5
|
import { JsonModifyWebpackPlugin } from "@infomaximum/json-modify-webpack-plugin";
|
|
5
6
|
import { systemRequire } from "../../utils.js";
|
|
6
|
-
import { BUILD_ARCHIVE_EXT, BUILD_WIDGET_CONFIG_NAME,
|
|
7
|
+
import { BUILD_ARCHIVE_EXT, BUILD_WIDGET_CONFIG_NAME, MANIFEST_REG_EXP, WIDGET_ARCHIVE_FULL_NAME, } from "../../const.js";
|
|
7
8
|
const packageFilename = "main.js";
|
|
8
9
|
export const getPackageConfig = (mode, PATHS) => {
|
|
9
10
|
const widgetVersion = systemRequire(PATHS.appPackageJson).version;
|
|
10
11
|
const manifestPackageName = systemRequire(PATHS.packageManifest).name;
|
|
12
|
+
const widgetPackageName = `${manifestPackageName}_${widgetVersion}`;
|
|
11
13
|
return {
|
|
12
14
|
mode,
|
|
13
15
|
name: "package",
|
|
14
16
|
entry: [
|
|
15
17
|
PATHS.packageManifest,
|
|
16
|
-
path.resolve(PATHS.appBuild,
|
|
18
|
+
path.resolve(PATHS.appBuild, WIDGET_ARCHIVE_FULL_NAME),
|
|
17
19
|
],
|
|
18
20
|
output: {
|
|
19
21
|
path: PATHS.appBuild,
|
|
@@ -23,7 +25,7 @@ export const getPackageConfig = (mode, PATHS) => {
|
|
|
23
25
|
module: {
|
|
24
26
|
rules: [
|
|
25
27
|
{
|
|
26
|
-
test:
|
|
28
|
+
test: MANIFEST_REG_EXP,
|
|
27
29
|
type: "asset/resource",
|
|
28
30
|
generator: {
|
|
29
31
|
filename: "manifest[ext]",
|
|
@@ -42,15 +44,28 @@ export const getPackageConfig = (mode, PATHS) => {
|
|
|
42
44
|
new CopyWebpackPlugin({
|
|
43
45
|
patterns: [{ from: PATHS.packagePath }],
|
|
44
46
|
}),
|
|
47
|
+
new RemovePlugin({
|
|
48
|
+
after: {
|
|
49
|
+
root: PATHS.appBuild,
|
|
50
|
+
test: [
|
|
51
|
+
{
|
|
52
|
+
folder: ".",
|
|
53
|
+
method: () => true,
|
|
54
|
+
recursive: true,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
exclude: [`${widgetPackageName}.${BUILD_ARCHIVE_EXT}`],
|
|
58
|
+
},
|
|
59
|
+
}),
|
|
45
60
|
new ZipPlugin({
|
|
46
|
-
filename:
|
|
61
|
+
filename: widgetPackageName,
|
|
47
62
|
extension: BUILD_ARCHIVE_EXT,
|
|
48
63
|
exclude: [packageFilename],
|
|
49
64
|
}),
|
|
50
65
|
new JsonModifyWebpackPlugin({
|
|
51
66
|
matchers: [
|
|
52
67
|
{
|
|
53
|
-
matcher:
|
|
68
|
+
matcher: MANIFEST_REG_EXP,
|
|
54
69
|
action: (currentJsonContent) => {
|
|
55
70
|
currentJsonContent.version = widgetVersion;
|
|
56
71
|
return currentJsonContent;
|
|
@@ -2,7 +2,7 @@ import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin";
|
|
|
2
2
|
import { TsconfigPathsPlugin } from "tsconfig-paths-webpack-plugin";
|
|
3
3
|
import webpack, {} from "webpack";
|
|
4
4
|
import { systemRequire } from "../../utils.js";
|
|
5
|
-
import { BUILD_WIDGET_CONFIG_NAME } from "../../const.js";
|
|
5
|
+
import { BUILD_WIDGET_CONFIG_NAME, MANIFEST_REG_EXP } from "../../const.js";
|
|
6
6
|
const { ProgressPlugin } = webpack;
|
|
7
7
|
const isProduction = (mode) => mode === "production";
|
|
8
8
|
const isDevelopment = (mode) => mode === "development";
|
|
@@ -121,7 +121,7 @@ export const getCommonWidgetConfig = (mode, PATHS) => {
|
|
|
121
121
|
type: "asset/inline",
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
|
-
test:
|
|
124
|
+
test: MANIFEST_REG_EXP,
|
|
125
125
|
type: "asset/resource",
|
|
126
126
|
generator: {
|
|
127
127
|
filename: "[name][ext]",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import ZipPlugin from "zip-webpack-plugin";
|
|
2
|
-
import { BUILD_ARCHIVE_EXT, WIDGET_ARCHIVE_NAME } from "../../../../const.js";
|
|
3
|
-
export const getZipWidgetPlugin = () => {
|
|
2
|
+
import { BUILD_ARCHIVE_EXT, MANIFEST_JSON_FILE_NAME, WIDGET_ARCHIVE_NAME, } from "../../../../const.js";
|
|
3
|
+
export const getZipWidgetPlugin = (isOnlyManifest) => {
|
|
4
4
|
return new ZipPlugin({
|
|
5
5
|
filename: WIDGET_ARCHIVE_NAME,
|
|
6
6
|
extension: BUILD_ARCHIVE_EXT,
|
|
7
|
+
include: isOnlyManifest ? [MANIFEST_JSON_FILE_NAME] : undefined,
|
|
7
8
|
});
|
|
8
9
|
};
|
package/dist/const.js
CHANGED
|
@@ -3,5 +3,8 @@ export const CUSTOM_PACKAGE_CLI_LIB_NAME = "@infomaximum/package-cli";
|
|
|
3
3
|
export const BUILD_WIDGET_CONFIG_NAME = "build-widget";
|
|
4
4
|
export const WIDGET_ARCHIVE_NAME = "widget";
|
|
5
5
|
export const BUILD_ARCHIVE_EXT = "zip";
|
|
6
|
+
export const WIDGET_ARCHIVE_FULL_NAME = `${WIDGET_ARCHIVE_NAME}.${BUILD_ARCHIVE_EXT}`;
|
|
6
7
|
export const DEFAULT_HOST = "localhost";
|
|
7
8
|
export const DEFAULT_PORT = "5555";
|
|
9
|
+
export const MANIFEST_JSON_FILE_NAME = "manifest.json";
|
|
10
|
+
export const MANIFEST_REG_EXP = new RegExp(`${MANIFEST_JSON_FILE_NAME}$`, "i");
|
package/dist/paths.js
CHANGED
|
@@ -2,6 +2,7 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { systemRequire } from "./utils.js";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
+
import { MANIFEST_JSON_FILE_NAME } from "./const.js";
|
|
5
6
|
const appDirectory = fs.realpathSync(process.cwd());
|
|
6
7
|
const _resolveApp = (cwd = appDirectory) => (relativePath) => path.resolve(cwd, relativePath);
|
|
7
8
|
const moduleFileExtensions = [
|
|
@@ -37,9 +38,9 @@ export const generatePaths = (args) => {
|
|
|
37
38
|
return generateIndexPath(cwd, entryPath);
|
|
38
39
|
},
|
|
39
40
|
appPackageJson: resolveApp("package.json"),
|
|
40
|
-
manifestJson: resolveApp(
|
|
41
|
+
manifestJson: resolveApp(MANIFEST_JSON_FILE_NAME),
|
|
41
42
|
packagePath,
|
|
42
|
-
packageManifest: resolveApp(path.resolve(packagePath,
|
|
43
|
+
packageManifest: resolveApp(path.resolve(packagePath, MANIFEST_JSON_FILE_NAME)),
|
|
43
44
|
appTsConfig: resolveApp("tsconfig.json"),
|
|
44
45
|
appNodeModules: resolveApp("node_modules"),
|
|
45
46
|
publicPath: "/",
|
|
@@ -11,13 +11,14 @@ import { getZipWidgetPlugin } from "../../configs/webpack/sections/plugins/zipWi
|
|
|
11
11
|
export const runBuild = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
12
|
const mode = "production";
|
|
13
13
|
const { entry, host, port } = args;
|
|
14
|
+
const isOnlyManifest = !!(host && port);
|
|
14
15
|
const PATHS = generatePaths({
|
|
15
16
|
entryPath: entry,
|
|
16
17
|
});
|
|
17
18
|
const sections = {
|
|
18
|
-
plugins: [getZipWidgetPlugin()],
|
|
19
|
+
plugins: [getZipWidgetPlugin(isOnlyManifest)],
|
|
19
20
|
};
|
|
20
|
-
if (
|
|
21
|
+
if (isOnlyManifest) {
|
|
21
22
|
sections.plugins.push(getModifyManifestWidgetPlugin({
|
|
22
23
|
host,
|
|
23
24
|
port,
|
|
@@ -9,7 +9,7 @@ import { WIDGET_INDEX_TEMPLATE } from "../../../templates/widget/src/widgetIndex
|
|
|
9
9
|
import { APP_D_TS_TEMPLATE } from "../../../templates/widget/src/widgetAppDTs.js";
|
|
10
10
|
import { WIDGET_INDEX_CSS_TEMPLATE } from "../../../templates/widget/src/widgetIndexCSS.js";
|
|
11
11
|
import { WIDGET_PACKAGE_JSON_TEMPLATE } from "../../../templates/widget/widgetPackageJson.js";
|
|
12
|
-
import { CUSTOM_PACKAGE_CLI_LIB_NAME, CUSTOM_WIDGET_LIB_NAME, } from "../../../const.js";
|
|
12
|
+
import { CUSTOM_PACKAGE_CLI_LIB_NAME, CUSTOM_WIDGET_LIB_NAME, MANIFEST_JSON_FILE_NAME, } from "../../../const.js";
|
|
13
13
|
const addIconActionName = "addIcon";
|
|
14
14
|
const addInitActions = (basePath, plop) => {
|
|
15
15
|
plop.setActionType(addIconActionName, function (answers, config, plop) {
|
|
@@ -31,7 +31,7 @@ const actions = ({ customWidgetVersion, packageCliVersion }) => {
|
|
|
31
31
|
return [
|
|
32
32
|
{
|
|
33
33
|
type: "add",
|
|
34
|
-
path:
|
|
34
|
+
path: `package/${MANIFEST_JSON_FILE_NAME}`,
|
|
35
35
|
template: PACKAGE_MANIFEST_TEMPLATE,
|
|
36
36
|
data: {
|
|
37
37
|
packageIconName,
|
|
@@ -45,7 +45,7 @@ const actions = ({ customWidgetVersion, packageCliVersion }) => {
|
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
type: "add",
|
|
48
|
-
path:
|
|
48
|
+
path: MANIFEST_JSON_FILE_NAME,
|
|
49
49
|
template: WIDGET_MANIFEST_TEMPLATE,
|
|
50
50
|
},
|
|
51
51
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MANIFEST_JSON_FILE_NAME } from "../../../const.js";
|
|
1
2
|
import { capitalizeHelperName } from "../../../scripts/widget/init/helpers.js";
|
|
2
3
|
export const WIDGET_INDEX_TEMPLATE = `\
|
|
3
4
|
import React from "react";
|
|
@@ -9,7 +10,7 @@ import {
|
|
|
9
10
|
type IBaseWidgetSettings,
|
|
10
11
|
type ICustomWidgetProps,
|
|
11
12
|
} from "@infomaximum/custom-widget";
|
|
12
|
-
import manifest from "
|
|
13
|
+
import manifest from "../${MANIFEST_JSON_FILE_NAME}";
|
|
13
14
|
|
|
14
15
|
interface Settings extends IBaseWidgetSettings {}
|
|
15
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infomaximum/package-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"exports": "./dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -26,9 +26,6 @@
|
|
|
26
26
|
"@infomaximum/json-modify-webpack-plugin": "^1.0.1",
|
|
27
27
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
|
|
28
28
|
"@svgr/webpack": "^8.1.0",
|
|
29
|
-
"@types/node": "^20.9.0",
|
|
30
|
-
"@types/semver": "^7.5.6",
|
|
31
|
-
"@types/zip-webpack-plugin": "^3.0.6",
|
|
32
29
|
"autoprefixer": "^10.4.16",
|
|
33
30
|
"babel-loader": "^9.1.3",
|
|
34
31
|
"babel-plugin-inline-json-import": "^0.3.2",
|
|
@@ -45,6 +42,7 @@
|
|
|
45
42
|
"postcss-loader": "^7.3.3",
|
|
46
43
|
"postcss-preset-env": "^9.3.0",
|
|
47
44
|
"react-refresh": "^0.14.0",
|
|
45
|
+
"remove-files-webpack-plugin": "^1.5.0",
|
|
48
46
|
"sass": "^1.69.5",
|
|
49
47
|
"sass-loader": "^13.3.2",
|
|
50
48
|
"semver": "^7.5.4",
|
|
@@ -58,6 +56,10 @@
|
|
|
58
56
|
"zip-webpack-plugin": "^4.0.1"
|
|
59
57
|
},
|
|
60
58
|
"devDependencies": {
|
|
59
|
+
"@types/node": "^20.9.0",
|
|
60
|
+
"@types/webpack": "^5.28.5",
|
|
61
|
+
"@types/semver": "^7.5.6",
|
|
62
|
+
"@types/zip-webpack-plugin": "^3.0.6",
|
|
61
63
|
"prettier": "^3.1.0",
|
|
62
64
|
"rimraf": "^5.0.5",
|
|
63
65
|
"typescript": "~5.3.2"
|
|
@@ -65,7 +67,8 @@
|
|
|
65
67
|
"resolutions": {
|
|
66
68
|
"wrap-ansi": "7.0.0",
|
|
67
69
|
"string-width": "4.1.0",
|
|
68
|
-
"strip-ansi": "6.0.0"
|
|
70
|
+
"strip-ansi": "6.0.0",
|
|
71
|
+
"@types/webpack": "^5.28.5"
|
|
69
72
|
},
|
|
70
73
|
"engines": {
|
|
71
74
|
"node": ">=16"
|