arui-scripts 0.0.0-next-20230725145300
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/.browserslistrc +5 -0
- package/.turbo/turbo-build.log +0 -0
- package/.turbo/turbo-test.log +91 -0
- package/CHANGELOG.md +1032 -0
- package/README.md +716 -0
- package/bin/build.sh +2 -0
- package/build/bin/index.d.ts +3 -0
- package/build/bin/index.js +21 -0
- package/build/commands/archive-build/index.d.ts +1 -0
- package/build/commands/archive-build/index.js +80 -0
- package/build/commands/build/build-wrapper.d.ts +8 -0
- package/build/commands/build/build-wrapper.js +41 -0
- package/build/commands/build/client.d.ts +1 -0
- package/build/commands/build/client.js +41 -0
- package/build/commands/build/index.d.ts +1 -0
- package/build/commands/build/index.js +10 -0
- package/build/commands/build/server.d.ts +1 -0
- package/build/commands/build/server.js +29 -0
- package/build/commands/bundle-analyze/index.d.ts +1 -0
- package/build/commands/bundle-analyze/index.js +36 -0
- package/build/commands/changelog/index.d.ts +5 -0
- package/build/commands/changelog/index.js +116 -0
- package/build/commands/docker-build/index.d.ts +1 -0
- package/build/commands/docker-build/index.js +70 -0
- package/build/commands/docker-build-compiled/index.d.ts +1 -0
- package/build/commands/docker-build-compiled/index.js +52 -0
- package/build/commands/ensure-yarn/index.d.ts +0 -0
- package/build/commands/ensure-yarn/index.js +8 -0
- package/build/commands/start/client.d.ts +1 -0
- package/build/commands/start/client.js +8 -0
- package/build/commands/start/index.d.ts +1 -0
- package/build/commands/start/index.js +8 -0
- package/build/commands/start/print-compiler-output.d.ts +1 -0
- package/build/commands/start/print-compiler-output.js +15 -0
- package/build/commands/start/server.d.ts +1 -0
- package/build/commands/start/server.js +8 -0
- package/build/commands/start-prod/client.d.ts +1 -0
- package/build/commands/start-prod/client.js +8 -0
- package/build/commands/start-prod/index.d.ts +1 -0
- package/build/commands/start-prod/index.js +8 -0
- package/build/commands/start-prod/server.d.ts +1 -0
- package/build/commands/start-prod/server.js +8 -0
- package/build/commands/test/index.d.ts +3 -0
- package/build/commands/test/index.js +17 -0
- package/build/commands/util/check-required-files.d.ts +2 -0
- package/build/commands/util/check-required-files.js +67 -0
- package/build/commands/util/client-assets-sizes.d.ts +26 -0
- package/build/commands/util/client-assets-sizes.js +88 -0
- package/build/commands/util/docker-build.d.ts +21 -0
- package/build/commands/util/docker-build.js +89 -0
- package/build/commands/util/exec.d.ts +2 -0
- package/build/commands/util/exec.js +18 -0
- package/build/commands/util/format-webpack-messages.d.ts +11 -0
- package/build/commands/util/format-webpack-messages.js +93 -0
- package/build/commands/util/make-tmp-dir.d.ts +6 -0
- package/build/commands/util/make-tmp-dir.js +29 -0
- package/build/commands/util/run-client-dev-server.d.ts +2 -0
- package/build/commands/util/run-client-dev-server.js +47 -0
- package/build/commands/util/run-compilers.d.ts +1 -0
- package/build/commands/util/run-compilers.js +31 -0
- package/build/commands/util/run-server-watch-compiler.d.ts +2 -0
- package/build/commands/util/run-server-watch-compiler.js +21 -0
- package/build/commands/util/yarn.d.ts +5 -0
- package/build/commands/util/yarn.js +53 -0
- package/build/configs/app-configs/calculate-dependent-config.d.ts +76 -0
- package/build/configs/app-configs/calculate-dependent-config.js +37 -0
- package/build/configs/app-configs/get-defaults.d.ts +3 -0
- package/build/configs/app-configs/get-defaults.js +127 -0
- package/build/configs/app-configs/index.d.ts +6 -0
- package/build/configs/app-configs/index.js +22 -0
- package/build/configs/app-configs/types.d.ts +108 -0
- package/build/configs/app-configs/types.js +2 -0
- package/build/configs/app-configs/update-with-config-file.d.ts +2 -0
- package/build/configs/app-configs/update-with-config-file.js +23 -0
- package/build/configs/app-configs/update-with-env.d.ts +2 -0
- package/build/configs/app-configs/update-with-env.js +20 -0
- package/build/configs/app-configs/update-with-package.d.ts +2 -0
- package/build/configs/app-configs/update-with-package.js +10 -0
- package/build/configs/app-configs/update-with-presets.d.ts +2 -0
- package/build/configs/app-configs/update-with-presets.js +26 -0
- package/build/configs/app-configs/validate-settings-keys.d.ts +4 -0
- package/build/configs/app-configs/validate-settings-keys.js +14 -0
- package/build/configs/babel-client.d.ts +34 -0
- package/build/configs/babel-client.js +65 -0
- package/build/configs/babel-dependencies.d.ts +14 -0
- package/build/configs/babel-dependencies.js +39 -0
- package/build/configs/babel-server.d.ts +27 -0
- package/build/configs/babel-server.js +47 -0
- package/build/configs/config-extras/minimizers/imagemin/imagemin.d.ts +2 -0
- package/build/configs/config-extras/minimizers/imagemin/imagemin.js +42 -0
- package/build/configs/config-extras/minimizers/imagemin/index.d.ts +1 -0
- package/build/configs/config-extras/minimizers/imagemin/index.js +17 -0
- package/build/configs/config-extras/minimizers/index.d.ts +1 -0
- package/build/configs/config-extras/minimizers/index.js +17 -0
- package/build/configs/dev-server.d.ts +2 -0
- package/build/configs/dev-server.js +48 -0
- package/build/configs/jest/babel-transform.d.ts +2 -0
- package/build/configs/jest/babel-transform.js +4 -0
- package/build/configs/jest/css-mock.d.ts +1 -0
- package/build/configs/jest/css-mock.js +2 -0
- package/build/configs/jest/file-transform.d.ts +3 -0
- package/build/configs/jest/file-transform.js +9 -0
- package/build/configs/jest/index.d.ts +50 -0
- package/build/configs/jest/index.js +47 -0
- package/build/configs/modules.d.ts +16 -0
- package/build/configs/modules.js +101 -0
- package/build/configs/mq.css +22 -0
- package/build/configs/postcss.config.d.ts +25 -0
- package/build/configs/postcss.config.js +62 -0
- package/build/configs/postcss.d.ts +2 -0
- package/build/configs/postcss.js +9 -0
- package/build/configs/process-assets-plugin-output.d.ts +2 -0
- package/build/configs/process-assets-plugin-output.js +46 -0
- package/build/configs/server-externals-exemptions.d.ts +1 -0
- package/build/configs/server-externals-exemptions.js +21 -0
- package/build/configs/stats-options.d.ts +3 -0
- package/build/configs/stats-options.js +49 -0
- package/build/configs/supporting-browsers.d.ts +2 -0
- package/build/configs/supporting-browsers.js +13 -0
- package/build/configs/util/apply-overrides.d.ts +56 -0
- package/build/configs/util/apply-overrides.js +47 -0
- package/build/configs/util/check-node-version.d.ts +2 -0
- package/build/configs/util/check-node-version.js +7 -0
- package/build/configs/util/find-loader.d.ts +2 -0
- package/build/configs/util/find-loader.js +23 -0
- package/build/configs/util/get-entry.d.ts +9 -0
- package/build/configs/util/get-entry.js +22 -0
- package/build/configs/util/get-polyfills.d.ts +3 -0
- package/build/configs/util/get-polyfills.js +27 -0
- package/build/configs/util/install-sourcemap-support.d.ts +1 -0
- package/build/configs/util/install-sourcemap-support.js +7 -0
- package/build/configs/util/node-assets-ignore.d.ts +0 -0
- package/build/configs/util/node-assets-ignore.js +31 -0
- package/build/configs/util/noop.d.ts +1 -0
- package/build/configs/util/noop.js +2 -0
- package/build/configs/util/register-ts-node.d.ts +0 -0
- package/build/configs/util/register-ts-node.js +17 -0
- package/build/configs/util/resolve.d.ts +12 -0
- package/build/configs/util/resolve.js +30 -0
- package/build/configs/webpack.client.d.ts +10 -0
- package/build/configs/webpack.client.dev.d.ts +2 -0
- package/build/configs/webpack.client.dev.js +9 -0
- package/build/configs/webpack.client.js +402 -0
- package/build/configs/webpack.client.prod.d.ts +2 -0
- package/build/configs/webpack.client.prod.js +9 -0
- package/build/configs/webpack.server.d.ts +2 -0
- package/build/configs/webpack.server.dev.d.ts +2 -0
- package/build/configs/webpack.server.dev.js +9 -0
- package/build/configs/webpack.server.js +229 -0
- package/build/configs/webpack.server.prod.d.ts +2 -0
- package/build/configs/webpack.server.prod.js +9 -0
- package/build/index.d.ts +5 -0
- package/build/index.js +9 -0
- package/build/plugins/reload-server-webpack-plugin.d.ts +9 -0
- package/build/plugins/reload-server-webpack-plugin.js +42 -0
- package/build/templates/dockerfile-compiled.template.d.ts +2 -0
- package/build/templates/dockerfile-compiled.template.js +47 -0
- package/build/templates/dockerfile.template.d.ts +2 -0
- package/build/templates/dockerfile.template.js +32 -0
- package/build/templates/nginx.conf.template.d.ts +2 -0
- package/build/templates/nginx.conf.template.js +34 -0
- package/build/templates/start.template.d.ts +2 -0
- package/build/templates/start.template.js +37 -0
- package/build/tsconfig-local.tsbuildinfo +1 -0
- package/docs/modules.md +572 -0
- package/jest-preset.js +22 -0
- package/package.json +172 -0
- package/release.config.js +21 -0
- package/tsconfig-local.json +16 -0
- package/tsconfig.json +71 -0
package/README.md
ADDED
|
@@ -0,0 +1,716 @@
|
|
|
1
|
+
ARUI-scripts
|
|
2
|
+
===
|
|
3
|
+
|
|
4
|
+
ΠΡΠΎΡΡΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ react-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
|
|
5
|
+
|
|
6
|
+
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
|
|
7
|
+
===
|
|
8
|
+
|
|
9
|
+
0. ΠΠ°ΠΊΠ΅Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ:
|
|
10
|
+
|
|
11
|
+
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ | ΠΠ΅ΡΡΠΈΡ
|
|
12
|
+
-- | --
|
|
13
|
+
`nodejs` | `12.13.0+`
|
|
14
|
+
`react` | `16.13.0+`
|
|
15
|
+
`react-dom` | `16.13.0+`
|
|
16
|
+
|
|
17
|
+
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ `arui-scripts` Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠ°ΠΊ dev Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
yarn add arui-scripts --dev
|
|
21
|
+
```
|
|
22
|
+
ΠΈΠ»ΠΈ
|
|
23
|
+
```bash
|
|
24
|
+
npm install arui-scripts --save-dev
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ
|
|
28
|
+
- `src/index.{js,jsx,ts,tsx}` - Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
|
|
29
|
+
- `src/server/index.{js,jsx,tsx}` - Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
|
|
30
|
+
- `node_modules/arui-feather/polyfills` - ΠΏΠΎΠ»ΠΈΡΠΈΠ»Ρ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
|
|
31
|
+
|
|
32
|
+
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ ΠΏΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ.
|
|
33
|
+
|
|
34
|
+
3. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· `arui-scripts`!
|
|
35
|
+
|
|
36
|
+
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
- `arui-scripts start` - Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ WebpackDevServer Π΄Π»Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΠΈ webpack Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ `--watch` Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
|
|
40
|
+
- `arui-scripts start:prod` - Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ start, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ production Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ webpack. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
|
|
41
|
+
- `arui-scripts build` - ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² production
|
|
42
|
+
- `arui-scripts docker-build` - ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ c production Π±ΠΈΠ»Π΄ΠΎΠΌ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΅Π³ΠΎ Π² Π°ΡΡΠΈΡΠ°ΠΊΡΠΎΡΠΈ
|
|
43
|
+
- `arui-scripts docker-build:compiled` - ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ c production Π±ΠΈΠ»Π΄ΠΎΠΌ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½
|
|
44
|
+
- `arui-scripts test` - Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ jest ΡΠ΅ΡΡΡ.
|
|
45
|
+
- `arui-scripts archive-build` - ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π°ΡΡ
ΠΈΠ² Ρ production Π±ΠΈΠ»Π΄ΠΎΠΌ
|
|
46
|
+
- `arui-scripts bundle-analyze` - Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) Π΄Π»Ρ prod Π²Π΅ΡΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
|
|
47
|
+
- `arui-scripts changelog` - Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΡΠΈΠΏΡ changelog ΡΠ΅ΡΠ΅Π· standard-version, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π² `CHANGELOG.MD`, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π° Π² Jenkins
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ².
|
|
54
|
+
Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² `package.json`, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΠ°ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ `aruiScripts`, ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ»
|
|
55
|
+
`arui-scripts.config.(js|ts)`.
|
|
56
|
+
|
|
57
|
+
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
|
|
58
|
+
|
|
59
|
+
- `dockerRegistry` - Π°Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ docker registry, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `''`, ΡΠΎ Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ registry
|
|
60
|
+
- `baseDockerImage` - ΠΈΠΌΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ docker ΠΎΠ±ΡΠ°Π·Π°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `alfabankui/arui-scripts:latest`.
|
|
61
|
+
- `runFromNonRootUser` - ΡΠ±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ°Π·Π° ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ `nginx`. ΠΡΠΆΠ½Π° Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ k8s, Ρ.ΠΊ ΡΠ°ΠΌ Π·Π°ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ· ΠΏΠΎΠ΄ `root` ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
62
|
+
- `serverEntry` - ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `src/server/index`.
|
|
63
|
+
- `serverOutput` - ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `server.js`.
|
|
64
|
+
- `clientPolyfillsEntry` - ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠ»ΠΎΠ². ΠΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Ρ ΠΈΠ· `arui-feather`, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
|
|
65
|
+
- `clientEntry` - ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `src/index.js`.
|
|
66
|
+
- `useServerHMR` - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈ HotModuleReplacement Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
67
|
+
- `webpack4Compatibility` - Π²ΠΊΠ»ΡΡΠΈΡΡ Π»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ webpack 4. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² [ΡΡΠΎΠΌ issue](https://github.com/webpack/webpack/issues/14580).
|
|
68
|
+
- `clientServerPort` - ΠΏΠΎΡΡ WebpackDevServer ΠΈ nginx ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `8080`.
|
|
69
|
+
- `serverPort` - ΠΏΠΎΡΡ Π½ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ Π΄Π΅Π² ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ nginx. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `3000`.
|
|
70
|
+
- `installServerSourceMaps` - Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π»ΠΈ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΠ°ΠΊΠ΅Ρ `source-map-support`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
71
|
+
- `additionalBuildPath` - ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² Π°ΡΡ
ΠΈΠ² ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `archive-build`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `['config']`.
|
|
72
|
+
- `archiveName` - ΠΈΠΌΡ Π°ΡΡ
ΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `archive-build`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `build.tar`.
|
|
73
|
+
- `keepPropTypes` - Π΅ΡΠ»ΠΈ `true`, ΠΏΠ°ΠΊΠ΅ΡΡ Ρ prop-types Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΈΠ· production Π±ΠΈΠ»Π΄Π°.
|
|
74
|
+
- `debug` - ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
75
|
+
- `statsOutputFilename` - ΠΈΠΌΡ [stats-ΡΠ°ΠΉΠ»Π°](https://webpack.js.org/api/stats/), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² [bundle-analyze](#Π°Π½Π°Π»ΠΈΠ·-Π±Π°Π½Π΄Π»Π°) ΠΊΠΎΠΌΠ°Π½Π΄Π΅
|
|
76
|
+
- `devSourceMaps` - ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ source-map ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `eval`. ΠΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ [Π·Π΄Π΅ΡΡ](https://webpack.js.org/configuration/devtool/).
|
|
77
|
+
**ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅**. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡΠ±ΡΡ
source-map Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ `eval` webpack-dev-server Π±ΡΠ΄Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Content-Security-Policy` (ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ) ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π½Π΅Π³ΠΎ `unsafe-eval`. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΡ](#dev-csp).
|
|
78
|
+
- `useTscLoader` - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ts-loader Π²ΠΌΠ΅ΡΡΠΎ babel-loader Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ts ΡΠ°ΠΉΠ»ΠΎΠ². Π£ babel-loader Π΅ΡΡΡ [ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ](https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
79
|
+
- `componentsTheme` - ΠΏΡΡΡ ΠΊ css ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ [core-components](https://github.com/core-ds/core-components). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ [postcss-custom-properties](https://github.com/postcss/postcss-custom-properties#importfrom).
|
|
80
|
+
- `keepCssVars` - ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ `postcss-custom-properties`, css ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π² Π±Π°Π½Π΄Π»Π΅.
|
|
81
|
+
- `removeDevDependenciesDuringDockerBuild` - ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ devDependencies ΠΈΠ· node_modules ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π΄ΠΎΠΊΠ΅Ρ ΠΎΠ±ΡΠ°Π·Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ devDependencies, Ρ.ΠΊ. Π² ΡΠ²ΠΎΡΠΌ Dockerfile Π²Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΠ΅ node_modules Π² Π΄ΠΎΠΊΠ΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
|
|
82
|
+
- `dataUrlMaxSize` - ΡΠ΅ΡΡΡΡΡ, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ (Π² Π±Π°ΠΉΡΠ°Ρ
), Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ `inline`, ΠΈΠ½Π°ΡΠ΅ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `1536`.
|
|
83
|
+
- `imageMinimizer` - ΡΠ°Π·Π΄Π΅Π» Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ.
|
|
84
|
+
- `imageMinimizer.svg.enabled` - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ `svg`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `true`.
|
|
85
|
+
- `imageMinimizer.gif.enabled` - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ `gif`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
86
|
+
- `imageMinimizer.gif.optimizationLevel` - ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ `gif`. ΠΡ `1` Π΄ΠΎ `3`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `1`.
|
|
87
|
+
- `imageMinimizer.jpg.enabled` - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ `jpg`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`.
|
|
88
|
+
- `imageMinimizer.jpg.quality` - ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡ `0` Π΄ΠΎ `100`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `75`.
|
|
89
|
+
- `imageMinimizer.png.enabled` - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ `png`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`. Π ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° png ΠΈ Π²Π»ΠΈΡΠ½ΠΈΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
Π΄Π°Π»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ [Π·Π΄Π΅ΡΡ](https://www.w3.org/TR/PNG-Chunks.html)
|
|
90
|
+
- `imageMinimizer.png.optimizationLevel` - ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ `png`. ΠΡ `0` Π΄ΠΎ `7`. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `3`. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](https://github.com/imagemin/imagemin-optipng#optimizationlevel)
|
|
91
|
+
- `imageMinimizer.png.bitDepthReduction` - Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ²Π΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](https://github.com/imagemin/imagemin-optipng#bitdepthreduction)
|
|
92
|
+
- `imageMinimizer.png.colorTypeReduction` - Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΎΡΡΠ΅Π½ΠΊΠΈ ΡΠ΅ΡΠΎΠ³ΠΎ / ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ / ΠΏΡ.). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](https://github.com/imagemin/imagemin-optipng#colortypereduction)
|
|
93
|
+
- `imageMinimizer.png.paletteReduction` - Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `false`. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](https://github.com/imagemin/imagemin-optipng#palettereduction)
|
|
94
|
+
- `imageMinimizer.png.interlaced` - ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](https://github.com/imagemin/imagemin-optipng#interlaced)
|
|
95
|
+
- `devServerCors` - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ cors-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² dev-server. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
|
|
96
|
+
- `embeddedModules`, `mfModules` - ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ [ΠΠΎΠ΄ΡΠ»ΠΈ](./docs/modules.md).
|
|
97
|
+
|
|
98
|
+
Π ΡΠ΅Π»ΡΡ
ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠ΅ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ package.json
|
|
99
|
+
ΠΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² environment ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ARUI_SCRIPTS_CONFIG
|
|
100
|
+
```
|
|
101
|
+
ARUI_SCRIPTS_CONFIG="{\"serverPort\":3333}" yarn start
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Π’Π°ΠΊ ΠΆΠ΅, ΡΠΈΡΠ°ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ jest (ΡΠΌ. [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ](https://facebook.github.io/jest/docs/en/configuration.html))
|
|
105
|
+
ΠΈ `proxy` (ΡΠΌ. [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ](https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#proxying-api-requests-in-development)).
|
|
106
|
+
|
|
107
|
+
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
|
|
108
|
+
---
|
|
109
|
+
ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ ΠΈΡ
ΠΈΠ· package.json Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
|
|
110
|
+
`arui-scripts.config.js` ΠΈΠ»ΠΈ `arui-scripts.config.ts`
|
|
111
|
+
ΠΡΠΈΠΌΠ΅Ρ `arui-scripts.config.ts`:
|
|
112
|
+
```ts
|
|
113
|
+
import { PackageSettings } from 'arui-scripts';
|
|
114
|
+
|
|
115
|
+
const settings: PackageSettings = {
|
|
116
|
+
clientEntry: {
|
|
117
|
+
mobile: './src/mobile',
|
|
118
|
+
desktop: './src/desktop',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
export default settings;
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ entry point
|
|
126
|
+
---
|
|
127
|
+
ΠΠ»ΡΡΠΈ `serverEntry` ΠΈ `clientEntry` ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, Π½ΠΎ ΠΈ Π»ΡΠ±ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π² [webpack Π²Π°ΡΠΈΠ°Π½ΡΡ](https://webpack.js.org/concepts/entry-points/).
|
|
128
|
+
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, package.json:
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"aruiScripts": {
|
|
132
|
+
"clientEntry": { "mobile": "src/mobile/", "desktop": "src/desktop/" },
|
|
133
|
+
"serverEntry": ["src/server-prepare", "src/server"]
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
ΠΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ entryPoint ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ `clientPolyfillsEntry` (Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½)
|
|
139
|
+
ΠΈ, Π² dev ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ hot-module-reload ΡΠ°ΠΉΠ»Ρ.
|
|
140
|
+
|
|
141
|
+
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ²
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Babel, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΠ°ΠΉΠ» `.babelrc` Π² ΡΡΡ ΠΏΠ°ΠΏΠΊΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
145
|
+
TypeScript ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² `tsconfig.json` Π² ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
146
|
+
|
|
147
|
+
ΠΡΡΠΈ Π΄ΠΎ Π°ΡΡΠ΅ΡΠΎΠ²
|
|
148
|
+
---
|
|
149
|
+
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ»Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎ Π΄Π²Π° Π±Π°Π½Π΄Π»Π° `vendor.[hash].js` ΠΈ `main.[hash].js`. ΠΠ»Ρ
|
|
150
|
+
ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ html Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ
Π°ΡΡΠ΅ΡΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» `webpack-assets.json`
|
|
151
|
+
ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΡ ΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
|
|
152
|
+
|
|
153
|
+
`vendor.js` Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π²Π°ΠΌΠΈ `node_modules`, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ `arui`.
|
|
154
|
+
|
|
155
|
+
`main.js` ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅.
|
|
156
|
+
|
|
157
|
+
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π²Π°ΡΠΈ Π°ΡΡΠ΅ΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, `vendor.js` Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΠ `main.js`.
|
|
158
|
+
|
|
159
|
+
ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ js ΠΈ css ΡΠ°ΠΉΠ»ΠΎΠ²:
|
|
160
|
+
```js
|
|
161
|
+
function readAssetsManifest() {
|
|
162
|
+
// ΡΠΈΡΠ°Π΅ΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ
|
|
163
|
+
const manifestPath = path.join(process.cwd(), '.build/webpack-assets.json');
|
|
164
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
165
|
+
|
|
166
|
+
const js = [];
|
|
167
|
+
const css = [];
|
|
168
|
+
// vendor Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄ΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ main
|
|
169
|
+
['vendor', 'main'].forEach((key) => {
|
|
170
|
+
if (!manifest[key]) { // Π² Π΄Π΅Π² ΡΠ±ΠΎΡΠΊΠ΅ vendor.js Π½Π΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (manifest[key].js) {
|
|
174
|
+
js.push(manifest[key].js);
|
|
175
|
+
}
|
|
176
|
+
if (manifest[key].css) {
|
|
177
|
+
css.push(manifest[key].css);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
return {
|
|
182
|
+
js, css
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ hot-module-replacement
|
|
188
|
+
---
|
|
189
|
+
#### ΠΠ»ΠΈΠ΅Π½Ρ:
|
|
190
|
+
|
|
191
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ css. ΠΠ»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ react Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
|
|
192
|
+
```jsx harmony
|
|
193
|
+
import React from 'react'
|
|
194
|
+
import ReactDOM from 'react-dom'
|
|
195
|
+
import App from './app';
|
|
196
|
+
|
|
197
|
+
ReactDOM.render(
|
|
198
|
+
<App />,
|
|
199
|
+
document.getElementById('react-app')
|
|
200
|
+
);
|
|
201
|
+
if (module.hot) {
|
|
202
|
+
module.hot.accept('./app', () => {
|
|
203
|
+
const NextAppAssignments = require('./app').default;
|
|
204
|
+
ReactDOM.render(
|
|
205
|
+
<NextAppAssignments />,
|
|
206
|
+
document.getElementById('react-app')
|
|
207
|
+
);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### Π‘Π΅ΡΠ²Π΅Ρ
|
|
213
|
+
Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°,
|
|
214
|
+
Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ hot module replacement Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ:
|
|
215
|
+
|
|
216
|
+
Π `package.json` Π΄ΠΎΠ±Π°Π²ΠΈΡΡ:
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"aruiScripts": { "useServerHMR": true }
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
ΠΠ°ΡΠ° Π²Ρ
ΠΎΠ΄Π½Π°Ρ ΡΠΎΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ (Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ hapi):
|
|
224
|
+
##### server/index.js
|
|
225
|
+
```js
|
|
226
|
+
import server from './server';
|
|
227
|
+
|
|
228
|
+
let currentServer = server;
|
|
229
|
+
|
|
230
|
+
async function startServer() {
|
|
231
|
+
try {
|
|
232
|
+
await currentServer.start();
|
|
233
|
+
} catch (error) {
|
|
234
|
+
console.error('Failed to start server', error);
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
startServer();
|
|
240
|
+
|
|
241
|
+
if (module.hot) {
|
|
242
|
+
module.hot.accept(['./server'], async () => {
|
|
243
|
+
try {
|
|
244
|
+
await currentServer.stop();
|
|
245
|
+
|
|
246
|
+
currentServer = server; // ΠΈΠΌΠΏΠΎΡΡ ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π°ΠΌΠ΅Π½ΠΈΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ
|
|
247
|
+
await startServer();
|
|
248
|
+
} catch (error) {
|
|
249
|
+
console.log('Failed to update server. You probably need to restart application', error);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
##### server/server.js
|
|
255
|
+
```js
|
|
256
|
+
import hapi from 'hapi';
|
|
257
|
+
const server = new hapi.Server();
|
|
258
|
+
|
|
259
|
+
server.ext('onPostStart', (_, done) => {
|
|
260
|
+
console.log(`Server is running: ${server.info.uri}`);
|
|
261
|
+
done();
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
(async () => {
|
|
265
|
+
server.connection({ port: 3000 });
|
|
266
|
+
|
|
267
|
+
// ...
|
|
268
|
+
// ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
|
|
269
|
+
// ...
|
|
270
|
+
})();
|
|
271
|
+
|
|
272
|
+
export default server;
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ, ΡΡΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
Π±ΡΡΡΡΠ΅Π΅.
|
|
276
|
+
Π ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HMR Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΡΡΠ½ΡΡ.
|
|
277
|
+
|
|
278
|
+
Π’Π΅ΡΡΡ
|
|
279
|
+
---
|
|
280
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° `arui-scripts test` Π²Π½ΡΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ jest Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ.
|
|
281
|
+
|
|
282
|
+
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ:
|
|
283
|
+
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ `jest-snapshot-serializer-class-name-to-string` Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ `cn`
|
|
284
|
+
- ΠΠ°ΠΌΠ΅Π½Ρ Π²ΡΠ΅Ρ
ΠΈΠΌΠΏΠΎΡΡΠΎΠ² css ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΠΏΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ
|
|
285
|
+
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ .js/.jsx ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ babel
|
|
286
|
+
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ .ts/.tsx ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ tsc
|
|
287
|
+
- ΠΠ°ΠΌΠ΅Π½Ρ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΠΈΠΌΠΏΠΎΡΡ ΡΡΡΠΎΠΊ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π°
|
|
288
|
+
|
|
289
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΌΠ°ΡΠΊΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ `*test*.(js|jsx|ts|tsx)`, `*spec*.((js|jsx|ts|tsx))`, `*/__test__/*.(js|jsx|ts|tsx)`.
|
|
290
|
+
|
|
291
|
+
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π»ΡΠ±ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ jest Π² `package.json`, [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ](https://facebook.github.io/jest/docs/en/configuration.html).
|
|
292
|
+
|
|
293
|
+
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²Π°ΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ VSΠ‘ode ΠΈΠ»ΠΈ WebStorm) Π½Π΅ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ `arui-scripts` ΠΊΠ°ΠΊ preset Π΄Π»Ρ jest.
|
|
294
|
+
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· arui-script, ΡΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠ΅ jest.
|
|
295
|
+
|
|
296
|
+
##### package.json
|
|
297
|
+
```json
|
|
298
|
+
{
|
|
299
|
+
"jest": {
|
|
300
|
+
"preset": "arui-scripts"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
docker
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° `arui-scripts docker-build` Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΡ Π΄ΠΎΠΊΠ΅Ρ ΠΎΠ±ΡΠ°Π·Π°.
|
|
309
|
+
|
|
310
|
+
ΠΠ±ΡΠ°Π· ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° [alpine-node-nginx](../alpine-node-nginx).
|
|
311
|
+
|
|
312
|
+
ΠΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ `{configs.dockerRegistry}/{name}:{version}`. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ `name` ΠΈ `version` ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±Π΅ΡΡΡΡΡ ΠΈΠ· package.json,
|
|
313
|
+
Π½ΠΎ Π²Ρ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΡ
ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
|
|
314
|
+
`arui-scripts docker-build name=container-name version=0.1-beta`
|
|
315
|
+
|
|
316
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
`node_modules` ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΠΎΡΠΊΠΎΠΉ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΆΠ΅ ΠΎΡΠΈΡΠ°Π΅Ρ Π΄Π΅Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ `yarn` ΠΈΠ»ΠΈ `npm`.
|
|
317
|
+
yarn Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ³Π΄Π° Π² ΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΡΡ `yarn.lock` ΠΈ `yarn` Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
|
|
318
|
+
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ yarn 2, Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ [workspace-tools](https://github.com/yarnpkg/berry/blob/HEAD/packages/plugin-workspace-tools/README.md), ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΡΠΊΠ°Π·Π°Π½ Π² `.yarnrc.yml` Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
319
|
+
|
|
320
|
+
ΠΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ `nginx` ΠΈ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° `nginx` ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ `nodejs` ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
|
|
321
|
+
|
|
322
|
+
Π ΠΈΡΠΎΠ³Π΅, Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΠ΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
docker run -p 8080:8080 container-name:version ./start.sh
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
ΠΠ° `8080` ΠΏΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π½ΡΡ nginx, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π΄Π°Π²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊΡ ΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ `nodejs`.
|
|
329
|
+
|
|
330
|
+
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ docker-ΠΎΠ±ΡΠ°Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ [overrides](#ΡΠΎΠ½ΠΊΠ°Ρ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°)
|
|
331
|
+
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π² Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° `Dockerfile` ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
|
|
332
|
+
ΠΡΠΈΠΌΠ΅Ρ [Dockerfile](src/templates/dockerfile.template.ts).
|
|
333
|
+
|
|
334
|
+
`Dockerfile` Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ overrides.
|
|
335
|
+
|
|
336
|
+
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΡΠΊΠ°, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ [overrides](#ΡΠΎΠ½ΠΊΠ°Ρ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°)
|
|
337
|
+
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° `start.sh` ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
|
|
338
|
+
ΠΡΠΈΠΌΠ΅Ρ [start.sh](src/templates/start.template.ts).
|
|
339
|
+
|
|
340
|
+
`start.sh` Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ overrides.
|
|
341
|
+
|
|
342
|
+
docker compiled
|
|
343
|
+
---
|
|
344
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° `arui-scripts docker-build:compiled` Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° `docker-build`, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΆΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΠΏΠ°ΠΏΠΊΡ `.build` ΠΊΠΎΠ΄.
|
|
345
|
+
ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π±ΡΠ΄ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ production Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
|
|
346
|
+
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² CI/CD, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°Π³Π΅ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½.
|
|
347
|
+
ΠΠ° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠ°ΠΏΠΊΠΈ node_modules Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ, Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ production Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
|
|
348
|
+
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠ» `.dockerignore` Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ `node_modules` ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎΠΊΠ΅ΡΠ°.
|
|
349
|
+
|
|
350
|
+
`arui-scripts docker-build:compiled` ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΠΎΠΏΡΠΈΠΈ, ΡΡΠΎ ΠΈ `arui-scripts docker-build`.
|
|
351
|
+
Dockerfile ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ [overrides](#ΡΠΎΠ½ΠΊΠ°Ρ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°).
|
|
352
|
+
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ `Dockerfile` Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.
|
|
353
|
+
|
|
354
|
+
archive
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° `arui-scripts archive-build` Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΡ Π°ΡΡ
ΠΈΠ²Π° ΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
|
|
358
|
+
|
|
359
|
+
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΡ
ΠΈΠ²Π° Π² ΠΌΠ°ΡΠ°ΡΠΎΠ½Π΅.
|
|
360
|
+
|
|
361
|
+
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
`node_modules` ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΠΎΡΠΊΠΎΠΉ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΆΠ΅ ΠΎΡΠΈΡΠ°Π΅Ρ Π΄Π΅Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ `yarn` ΠΈΠ»ΠΈ `npm`.
|
|
362
|
+
yarn Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ³Π΄Π° Π² ΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΡΡ `yarn.lock` ΠΈ `yarn` Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
|
|
363
|
+
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ yarn 2, Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ [workspace-tools](https://github.com/yarnpkg/berry/blob/HEAD/packages/plugin-workspace-tools/README.md), ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΡΠΊΠ°Π·Π°Π½ Π² `.yarnrc.yml` Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
364
|
+
|
|
365
|
+
ΠΡΠΎΠ³ΠΎΠ²ΡΠΉ Π°ΡΡ
ΠΈΠ² Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π² ΡΠ΅Π±Π΅ `.build`, `node_modules`, `package.json` ΠΈ `config` ΠΏΠ°ΠΏΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
366
|
+
|
|
367
|
+
ΠΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄ΠΎ Π±ΡΠΊΠ΅Π½Π΄Π°.
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΡΠΎΠ½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ API, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΌΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ nodejs ΡΠ΅ΡΠ²Π΅ΡΠ°, Π² Π΄Π΅Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ².
|
|
371
|
+
Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ `proxy` Π² Π²Π°ΡΠ΅ΠΌ `package.json`.
|
|
372
|
+
|
|
373
|
+
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
|
|
374
|
+
|
|
375
|
+
```json
|
|
376
|
+
{
|
|
377
|
+
"proxy": {
|
|
378
|
+
"/corp-shared-ui": {
|
|
379
|
+
"target": "http://corpint4",
|
|
380
|
+
"headers": {
|
|
381
|
+
"host": "corpint4"
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΊ `http://localhost:8080/corp-shared-ui/` Π½Π° `http://corpint4/corp-shared-ui`.
|
|
389
|
+
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Webpack](https://webpack.js.org/configuration/dev-server/#devserver-proxy).
|
|
390
|
+
|
|
391
|
+
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ typescript
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ TS ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΡΠ°ΠΉΠ» `tsconfig.json`.
|
|
395
|
+
ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³:
|
|
396
|
+
|
|
397
|
+
```json
|
|
398
|
+
{
|
|
399
|
+
"extends": "./node_modules/arui-scripts/tsconfig.json"
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ TS Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· babel, Π½ΠΎ Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ:
|
|
404
|
+
- Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ namespace
|
|
405
|
+
- ΠΠ΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ import/export (`import foo = require(...)`, `export = foo`)
|
|
406
|
+
- enum merging
|
|
407
|
+
|
|
408
|
+
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΈΠ· Π²ΡΡΠ΅ΠΏΠ΅ΡΠΈΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ - Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ tsc Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ts ΡΠ°ΠΉΠ»ΠΎΠ²
|
|
409
|
+
|
|
410
|
+
```json
|
|
411
|
+
{
|
|
412
|
+
"aruiScripts": { "useTscLoader": true }
|
|
413
|
+
}
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ nginx
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ nginx ΠΈΠΌΠ΅Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Ρ ΡΠΎΡΡΠΈΠ½Π³ΠΎΠΌ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΡΡΡ.
|
|
420
|
+
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ [overrides](#ΡΠΎΠ½ΠΊΠ°Ρ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°).
|
|
421
|
+
Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ `nginx.conf` Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΡΡΠ°ΠΌΠΈ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³Π° [ΡΡΡ](src/templates/nginx.conf.template.ts).
|
|
422
|
+
Π€Π°ΠΉΠ» nginx.conf ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Π°ΠΌΠΈ.
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ env ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² nginx.conf
|
|
426
|
+
---
|
|
427
|
+
ΠΠ½ΠΎΠ³Π΄Π° Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· Π½Π°ΡΡΡΠΎΠ΅ΠΊ nginx Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
|
|
428
|
+
ΠΎΡ ΡΡΠ΅Π΄Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°Π΄Π°Π² ΡΠ²ΠΎΠΉ `nginx.conf` ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π² ENV ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
|
|
429
|
+
Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ nginx ΠΏΡΠΎΠ³ΠΎΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅
|
|
430
|
+
ΡΠ΅ΡΠ΅Π· [envsubst](https://www.gnu.org/software/gettext/manual/html_node/envsubst-Invocation.html).
|
|
431
|
+
|
|
432
|
+
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ docker-ΠΎΠ±ΡΠ°Π· Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ - ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ ΡΡΠΎ Π² Π½Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ `envsubst`.
|
|
433
|
+
ΠΠ»Ρ alpine ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° [`gettext`](https://pkgs.alpinelinux.org/contents?branch=edge&name=gettext&arch=x86&repo=main)
|
|
434
|
+
|
|
435
|
+
**ΠΠ°ΠΆΠ½ΠΎ**. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
nginx, ΡΠΈΠΏΠ° `$proxy_add_x_forwarded_for`
|
|
436
|
+
ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ envsubst ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° `~~proxy_add_x_forwarded_for~~`, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Ρ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ Π²ΠΈΠ΄.
|
|
437
|
+
envsubst Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ **ΡΠΎΠ»ΡΠΊΠΎ** ΠΊΠ°ΠΊ `${MY_VAR}`.
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ:
|
|
441
|
+
|
|
442
|
+
```nginx.conf
|
|
443
|
+
server {
|
|
444
|
+
listen 8080;
|
|
445
|
+
server_name ${SERVICE_NAME};
|
|
446
|
+
...
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
```shell
|
|
451
|
+
docker run my-awesome-app --env SERVICE_NAME=my-app
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° nginx Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ server_name `my-app`.
|
|
455
|
+
|
|
456
|
+
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ proptypes
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² production ΡΠ΅ΠΆΠΈΠΌΠΈ proptypes Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ, ΠΈΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ· production ΡΠ±ΠΎΡΠΊΠΈ.
|
|
460
|
+
|
|
461
|
+
Π‘Π°ΠΌΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ proptypes ΡΠ΄Π°Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ [babel-plugin-transform-react-remove-prop-types](https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types).
|
|
462
|
+
ΠΠΎ ΠΈΠΌΠΏΠΎΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² `prop-types` ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΠ΄Π°Π»ΡΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ `webpack.NormalModuleReplacementPlugin`.
|
|
463
|
+
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΠΏΡΡΡΡΡΠΊΡ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ ΠΌΠ°ΡΠΊΡ:
|
|
464
|
+
|
|
465
|
+
- `/^react-style-proptype$/`
|
|
466
|
+
- `/^thrift-services\/proptypes/`
|
|
467
|
+
|
|
468
|
+
ΠΡΠ»ΠΈ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅, Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ - Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² `package.json`:
|
|
469
|
+
|
|
470
|
+
```json
|
|
471
|
+
{
|
|
472
|
+
"aruiScripts": {
|
|
473
|
+
"keepPropTypes": true
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
<a name="node-externals"></a>
|
|
479
|
+
|
|
480
|
+
require Π½Π΅ js ΡΠ°ΠΉΠ»ΠΎΠ² Π² node_modules Π² node.js
|
|
481
|
+
---
|
|
482
|
+
Π‘Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΡΠΎΠ΅Π½Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ `node_modules` Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΡΠ±ΠΎΡΠΊΡ (Π² ΡΠ°ΠΉΠ» `.build/server.js`),
|
|
483
|
+
Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ `require` node.js.
|
|
484
|
+
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΡΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ "ΡΡΡΠ°Π½Π½ΡΠ΅" Π²Π΅ΡΠΈ Ρ require - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΠ°ΡΡΡΡ
|
|
485
|
+
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ `require.extensions` ΠΈ Ρ.Π΄. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊ
|
|
486
|
+
ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
|
|
487
|
+
|
|
488
|
+
ΠΠΎ Π² ΡΠ»ΡΡΠ°Π΅ react-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΌΡ Π·Π°ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΅ΡΠ΅ ΠΈ `.css`, `.png` ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ.
|
|
489
|
+
`require` ΠΈΠ· node.js Π½Π° ΡΠ°ΠΊΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
Π»ΠΎΠΌΠ°Π΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²ΡΠ΅ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²
|
|
490
|
+
ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» `.build/server.js`. ΠΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ [Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΡ
Π² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅](src/configs/webpack.server.dev.ts#L59)
|
|
491
|
+
ΠΏΠ»Π°Π³ΠΈΠ½Π° [webpack-node-externals](https://www.npmjs.com/package/webpack-node-externals).
|
|
492
|
+
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅-js ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ
Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ - Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅
|
|
493
|
+
Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ `overrides`, ΠΈ ΠΊΠ»ΡΡΠΎΠΌ `serverExternalsExemptions`.
|
|
494
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΆΠ΅ Π²ΡΠ΅ Π½Π΅-js ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ.
|
|
495
|
+
|
|
496
|
+
ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ»Π΄Π°
|
|
497
|
+
---
|
|
498
|
+
Π dev ΡΠ±ΠΎΡΠΊΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅
|
|
499
|
+
Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ - ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΡΠ°Π²ΠΈΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠ΄.
|
|
500
|
+
|
|
501
|
+
ΠΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΠΊΠ°ΠΌΠΈ ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ node_modules - Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ webpack Π±ΡΠ΄Π΅Ρ
|
|
502
|
+
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΊΠ΅ΡΠ°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ Π² ΡΠ±ΠΎΡΠΊΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΠ΅Ρ
|
|
503
|
+
webpack ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ. ΠΠ΅ΡΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ `.cache` Π²Π½ΡΡΡΠΈ `node_modules` Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|
|
504
|
+
|
|
505
|
+
```
|
|
506
|
+
rm -rf ./node_modules/.cache
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
<a name="dev-csp"></a>
|
|
510
|
+
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ CSP Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
|
|
511
|
+
---
|
|
512
|
+
ΠΡΠ»ΠΈ Π² Π΄Π΅Π²-ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ source-map, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° eval (ΡΡΠΎ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅) - ΡΠΎ
|
|
513
|
+
webpack-dev-server Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² CSP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `script-src` Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ `unsafe-eval` (ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°).
|
|
514
|
+
ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ
|
|
515
|
+
ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π’ΠΠΠ¬ΠΠ Π² Π΄Π΅Π²-ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π²Π°Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ - Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ
|
|
516
|
+
ΡΠΈΠΏ source-map Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ eval.
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
ΠΠ½Π°Π»ΠΈΠ· Π±Π°Π½Π΄Π»Π°
|
|
520
|
+
---
|
|
521
|
+
ΠΠ»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π±Π°Π½Π΄Π»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π² arui-scripts Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°
|
|
522
|
+
```
|
|
523
|
+
arui-scripts bundle-analyze
|
|
524
|
+
```
|
|
525
|
+
ΠΠ½Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
|
|
526
|
+
Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ [stats-ΡΠ°ΠΉΠ»](https://webpack.js.org/api/stats/), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²
|
|
527
|
+
[ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
](http://webpack.github.io/analyse/) ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠΏΠ°Π» Π² Π±Π°Π½Π΄Π».
|
|
528
|
+
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ°ΡΡΡΡ Π² `.build/stats.json`.
|
|
529
|
+
|
|
530
|
+
Π’ΠΎΠ½ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
|
|
531
|
+
===
|
|
532
|
+
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ `arui-scripts`, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Π²Π΅Π±ΠΏΠ°ΠΊΠ° -
|
|
533
|
+
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ `overrides`.
|
|
534
|
+
|
|
535
|
+
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΊΠΎΡΠ½Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ» `arui-scripts.overrides.js` ΠΈΠ»ΠΈ `arui-scripts.overrides.ts`, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ
|
|
536
|
+
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Ρ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π² `arui-scripts`.
|
|
537
|
+
|
|
538
|
+
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ. ΠΠ»Ρ Π²ΡΠ΅Ρ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΊΠ°ΡΡ Π² `arui-scripts.overrides.js`,
|
|
539
|
+
Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ - ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½Π°, ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΅ΠΉ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ
|
|
540
|
+
ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠΌ [AppConfig](./src/configs/app-configs/types.ts)).
|
|
541
|
+
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
|
|
542
|
+
|
|
543
|
+
ΠΡΠΈΠΌΠ΅Ρ `arui-scripts.overrides.js`:
|
|
544
|
+
```javascript
|
|
545
|
+
const path = require('path');
|
|
546
|
+
module.exports = {
|
|
547
|
+
webpack: (config, applicationConfig) => {
|
|
548
|
+
config.resolve.alias = {
|
|
549
|
+
components: path.resolve(__dirname, 'src/components')
|
|
550
|
+
};
|
|
551
|
+
return config;
|
|
552
|
+
}
|
|
553
|
+
};
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
ΠΡΠΈΠΌΠ΅Ρ `arui-scripts.overrides.ts`:
|
|
557
|
+
```ts
|
|
558
|
+
import type { OverrideFile } from 'arui-scripts';
|
|
559
|
+
import path from 'path';
|
|
560
|
+
|
|
561
|
+
const overrides: OverrideFile = {
|
|
562
|
+
webpack: (config, applicationConfig) => {
|
|
563
|
+
config.resolve.alias = {
|
|
564
|
+
components: path.resolve(__dirname, 'src/components')
|
|
565
|
+
};
|
|
566
|
+
return config;
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
export default overrides;
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
**Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π»Π΅ΠΆΠΈΡ ΠΈ ts, ΠΈ js ΡΠ°ΠΉΠ» Ρ overrides, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΡΠ΄Π΅Ρ js Π²Π΅ΡΡΠΈΡ.**
|
|
574
|
+
|
|
575
|
+
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ Π²Π΅Π±ΠΏΠ°ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ `alias` *components*.
|
|
576
|
+
|
|
577
|
+
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
|
|
578
|
+
- `babel-client` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ `babel` Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»ΡΡΠΈ: `babel`, `babelClient`.
|
|
579
|
+
- `babel-server` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ `babel` Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»ΡΡΠΈ: `babel`, `babelServer`.
|
|
580
|
+
- `dev-server` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ `webpack-dev-server`. ΠΠ»ΡΡΠΈ: `devServer`.
|
|
581
|
+
- `postcss` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ `postcss`. ΠΠ»ΡΡΠΈ: `postcss`.
|
|
582
|
+
> `config` postcss ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΡΠΈΠ² Ρ ΡΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΆΠ΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½Ρ. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
|
|
583
|
+
```javascript
|
|
584
|
+
import {
|
|
585
|
+
createPostcssConfig, // ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° postcss
|
|
586
|
+
postcssPlugins, // ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
|
|
587
|
+
postcssPluginsOptions, // ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
|
|
588
|
+
} from 'arui-scripts/build/configs/postcss.config';
|
|
589
|
+
|
|
590
|
+
module.exports = {
|
|
591
|
+
postcss: (config) => {
|
|
592
|
+
const { files } = postcssPluginsOptions['@csstools/postcss-global-data'];
|
|
593
|
+
const newOption = {
|
|
594
|
+
...postcssPluginsOptions,
|
|
595
|
+
'@csstools/postcss-global-data': {
|
|
596
|
+
files:files.concat(['./vars.css'])
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
return createPostcssConfig(postcssPlugins, newOption);
|
|
600
|
+
},
|
|
601
|
+
};
|
|
602
|
+
```
|
|
603
|
+
- `stats-options` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ [webpack-stats](https://webpack.js.org/configuration/stats/). ΠΠ»ΡΡΠΈ: `stats`.
|
|
604
|
+
- `webpack.client.dev` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ webpack Π² dev ΡΠ΅ΠΆΠΈΠΌΠ΅.
|
|
605
|
+
ΠΠ»ΡΡΠΈ: `webpack`, `webpackClient`, `webpackDev`, `webpackClientDev`.
|
|
606
|
+
- `webpack.client.prod` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ webpack Π² prod ΡΠ΅ΠΆΠΈΠΌΠ΅.
|
|
607
|
+
ΠΠ»ΡΡΠΈ: `webpack`, `webpackClient`, `webpackProd`, `webpackClientProd`.
|
|
608
|
+
- `webpack.server.dev` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ webpack Π² dev ΡΠ΅ΠΆΠΈΠΌΠ΅.
|
|
609
|
+
ΠΠ»ΡΡΠΈ: `webpack`, `webpackServer`, `webpackDev`, `webpackServerDev`.
|
|
610
|
+
- `webpack.server.prod` - ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ webpack Π² prod ΡΠ΅ΠΆΠΈΠΌΠ΅.
|
|
611
|
+
ΠΠ»ΡΡΠΈ: `webpack`, `webpackServer`, `webpackProd`, `webpackServerProd`.
|
|
612
|
+
- `supporting-browsers` - ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ [browserslist](https://github.com/browserslist/browserslist).
|
|
613
|
+
ΠΠ»ΡΡΠΈ: `browsers`, `supportingBrowsers`
|
|
614
|
+
- `Dockerfile` - Π΄ΠΎΠΊΠ΅ΡΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
|
|
615
|
+
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ [ΡΡΡ](./src/templates/dockerfile.template.ts).
|
|
616
|
+
[`Dockerfile` Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°](#docker) ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ overrides.
|
|
617
|
+
- `DockerfileCompiled` - Π΄ΠΎΠΊΠ΅ΡΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `arui-scripts docker-build:compiled`
|
|
618
|
+
- `nginx` - ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ nginx Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
|
|
619
|
+
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ [ΡΡΡ](./src/templates/nginx.conf.template.ts).
|
|
620
|
+
[Π€Π°ΠΉΠ» `nginx.conf`](#ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ-nginx) Π² ΠΊΠΎΡΠ½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Π°ΠΌΠΈ.
|
|
621
|
+
- `start.sh` - ΡΠ°Π±Π»ΠΎΠ½ entrypoint Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠ°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ [ΡΡΡ](./src/templates/start.template.ts).
|
|
622
|
+
- `serverExternalsExemptions` - ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΠΏΠΈΡΠΎΠΊ Π²Π½Π΅ΡΠ½ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ°. [ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅](#node-externals).
|
|
623
|
+
|
|
624
|
+
ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
|
|
625
|
+
|
|
626
|
+
### Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Π΄Π»Ρ webpack
|
|
627
|
+
ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ webpack. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
|
|
628
|
+
service worker'Π° (ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΠΊΠ΅ΠΉΡΠΎΠ²). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-Ρ
Π΅Π»ΠΏΠ΅Ρ `createSingleWebpackConfig`:
|
|
629
|
+
|
|
630
|
+
```ts
|
|
631
|
+
import type { OverrideFile } from 'arui-scripts';
|
|
632
|
+
|
|
633
|
+
const overrides: OverrideFile = {
|
|
634
|
+
webpackClient: (config, appConfig, { createSingleClientWebpackConfig }) => {
|
|
635
|
+
return [
|
|
636
|
+
config,
|
|
637
|
+
createSingleClientWebpackConfig(
|
|
638
|
+
'./src/sw.js', // entrypoint, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ/ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ
|
|
639
|
+
'sw', // Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΈΠΌΠ΅Π½Π° ΡΠ°Π½ΠΊΠΎΠ²
|
|
640
|
+
),
|
|
641
|
+
];
|
|
642
|
+
}
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
export default overrides;
|
|
646
|
+
```
|
|
647
|
+
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ webpack, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Π°. ΠΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ,
|
|
648
|
+
Π½Π΅ Π±ΠΎΡΡΡ ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
|
|
649
|
+
|
|
650
|
+
Π‘ΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΈΡΡ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ assets-manifest'Π°.
|
|
651
|
+
|
|
652
|
+
ΠΡΠ΅ΡΠ΅ΡΡ
|
|
653
|
+
===
|
|
654
|
+
|
|
655
|
+
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΈ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄ΠΎΠ² ΡΡΠ°Π·Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
- Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ
|
|
656
|
+
ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠ΅ΡΠ΅ΡΠΎΠ². ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ½ΠΎΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ.
|
|
657
|
+
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΡΠ΅ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ Π² package.json:
|
|
658
|
+
|
|
659
|
+
```json
|
|
660
|
+
{
|
|
661
|
+
"aruiScripts": {
|
|
662
|
+
"presets": "my-company-presets"
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
ΠΠ°ΠΊ ΠΏΡΠ΅ΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ ΠΏΡΡΡ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΠΎΠ±ΡΠΈΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ (Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ `require.resolve`
|
|
668
|
+
ΠΎΡ ΠΏΠ°ΠΏΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ package.json. Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΠΏΠΊΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΠ°ΠΊ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ· node_modules).
|
|
669
|
+
|
|
670
|
+
Π‘Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΏΡΠ΅ΡΠ΅ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π°:
|
|
671
|
+
- `arui-scirpts.config.js` (ΠΈΠ»ΠΈ `arui-scripts.config.ts`)
|
|
672
|
+
- `arui-scripts.overrides.js` (ΠΈΠ»ΠΈ `arui-scirpts.overrides.ts`)
|
|
673
|
+
|
|
674
|
+
### arui-scripts.config (js | ts)
|
|
675
|
+
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΊΠ»ΡΡΠΈ [ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ](#Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ).
|
|
676
|
+
```js
|
|
677
|
+
module.exports = {
|
|
678
|
+
baseDockerImage: 'my-company-artifactory.com/arui-scripts-base:11.2'
|
|
679
|
+
};
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
ΠΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ ts:
|
|
683
|
+
```ts
|
|
684
|
+
import type { PackageSettings } from 'arui-scripts';
|
|
685
|
+
|
|
686
|
+
const settings: PackageSettings = {
|
|
687
|
+
baseDockerImage: 'my-company-artifactory.com/arui-scripts-base:11.2'
|
|
688
|
+
};
|
|
689
|
+
|
|
690
|
+
export default settings;
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
ΠΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΊΠΎΠ½ΡΠΈΡΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
|
|
694
|
+
1. Π±Π°Π·ΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ· arui-scripts
|
|
695
|
+
2. Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ· presets
|
|
696
|
+
3. Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ· package.json ΠΏΡΠΎΠ΅ΠΊΡΠ°
|
|
697
|
+
4. Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· env ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
|
|
698
|
+
|
|
699
|
+
**ΠΠ°ΠΆΠ½ΠΎ!**
|
|
700
|
+
|
|
701
|
+
ΠΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ `serverEntry`, `additionalBuildPath` ΠΈ Π΄ΡΡΠ³ΠΈΠ΅)
|
|
702
|
+
ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° Π½Π΅ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
|
|
703
|
+
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π΄Π°ΡΡ ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° Π²Π½ΡΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΡΠ΅ΡΠ΅ΡΠ°ΠΌΠΈ.
|
|
704
|
+
|
|
705
|
+
### arui-scripts.overrides (js | ts)
|
|
706
|
+
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ [Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄ΠΎΠ² Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅](#ΡΠΎΠ½ΠΊΠ°Ρ-Π½Π°ΡΡΡΠΎΠΉΠΊΠ°).
|
|
707
|
+
```js
|
|
708
|
+
module.exports = {
|
|
709
|
+
babelClient(config) {
|
|
710
|
+
config.plugins.push('my-awesome-babel-plugin');
|
|
711
|
+
return config;
|
|
712
|
+
}
|
|
713
|
+
};
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
ΠΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Ρ ΠΈΠ· ΠΏΡΠ΅ΡΠ΅ΡΠΎΠ² Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΡΠ»Π΅ Π½ΠΈΡ
Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ²Π΅ΡΡΠ°ΠΉΠ΄Ρ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ°.
|