@modern-js/core 1.7.1 → 1.9.1

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.
Files changed (215) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +47 -0
  3. package/bin/modern-js.js +1 -1
  4. package/compiled/ajv/codegen.js +1 -0
  5. package/compiled/ajv/dist/ajv.d.ts +16 -0
  6. package/compiled/ajv/dist/compile/codegen/code.d.ts +40 -0
  7. package/compiled/ajv/dist/compile/codegen/index.d.ts +79 -0
  8. package/compiled/ajv/dist/compile/codegen/scope.d.ts +79 -0
  9. package/compiled/ajv/dist/compile/errors.d.ts +13 -0
  10. package/compiled/ajv/dist/compile/index.d.ts +80 -0
  11. package/compiled/ajv/dist/compile/ref_error.d.ts +6 -0
  12. package/compiled/ajv/dist/compile/resolve.d.ts +12 -0
  13. package/compiled/ajv/dist/compile/rules.d.ts +28 -0
  14. package/compiled/ajv/dist/compile/util.d.ts +40 -0
  15. package/compiled/ajv/dist/compile/validate/index.d.ts +42 -0
  16. package/compiled/ajv/dist/compile/validate/subschema.d.ts +47 -0
  17. package/compiled/ajv/dist/core.d.ts +173 -0
  18. package/compiled/ajv/dist/runtime/validation_error.d.ts +7 -0
  19. package/compiled/ajv/dist/types/index.d.ts +183 -0
  20. package/compiled/ajv/dist/types/json-schema.d.ts +124 -0
  21. package/compiled/ajv/dist/types/jtd-schema.d.ts +169 -0
  22. package/compiled/ajv/index.js +9 -0
  23. package/compiled/ajv/license +22 -0
  24. package/compiled/ajv/package.json +1 -0
  25. package/compiled/ajv/uri-js/dist/es5/uri.all.d.ts +59 -0
  26. package/compiled/ajv-keywords/ajv/dist/ajv.d.ts +16 -0
  27. package/compiled/ajv-keywords/ajv/dist/compile/codegen/code.d.ts +40 -0
  28. package/compiled/ajv-keywords/ajv/dist/compile/codegen/index.d.ts +79 -0
  29. package/compiled/ajv-keywords/ajv/dist/compile/codegen/scope.d.ts +79 -0
  30. package/compiled/ajv-keywords/ajv/dist/compile/errors.d.ts +13 -0
  31. package/compiled/ajv-keywords/ajv/dist/compile/index.d.ts +80 -0
  32. package/compiled/ajv-keywords/ajv/dist/compile/ref_error.d.ts +6 -0
  33. package/compiled/ajv-keywords/ajv/dist/compile/resolve.d.ts +12 -0
  34. package/compiled/ajv-keywords/ajv/dist/compile/rules.d.ts +28 -0
  35. package/compiled/ajv-keywords/ajv/dist/compile/util.d.ts +40 -0
  36. package/compiled/ajv-keywords/ajv/dist/compile/validate/index.d.ts +42 -0
  37. package/compiled/ajv-keywords/ajv/dist/compile/validate/subschema.d.ts +47 -0
  38. package/compiled/ajv-keywords/ajv/dist/core.d.ts +173 -0
  39. package/compiled/ajv-keywords/ajv/dist/runtime/validation_error.d.ts +7 -0
  40. package/compiled/ajv-keywords/ajv/dist/types/index.d.ts +183 -0
  41. package/compiled/ajv-keywords/ajv/dist/types/json-schema.d.ts +124 -0
  42. package/compiled/ajv-keywords/ajv/dist/types/jtd-schema.d.ts +169 -0
  43. package/compiled/ajv-keywords/dist/index.d.ts +4 -0
  44. package/compiled/ajv-keywords/index.js +1 -0
  45. package/compiled/ajv-keywords/license +21 -0
  46. package/compiled/ajv-keywords/package.json +1 -0
  47. package/compiled/ajv-keywords/uri-js/dist/es5/uri.all.d.ts +59 -0
  48. package/compiled/better-ajv-errors/ajv/dist/ajv.d.ts +16 -0
  49. package/compiled/better-ajv-errors/ajv/dist/compile/codegen/code.d.ts +40 -0
  50. package/compiled/better-ajv-errors/ajv/dist/compile/codegen/index.d.ts +79 -0
  51. package/compiled/better-ajv-errors/ajv/dist/compile/codegen/scope.d.ts +79 -0
  52. package/compiled/better-ajv-errors/ajv/dist/compile/errors.d.ts +13 -0
  53. package/compiled/better-ajv-errors/ajv/dist/compile/index.d.ts +80 -0
  54. package/compiled/better-ajv-errors/ajv/dist/compile/ref_error.d.ts +6 -0
  55. package/compiled/better-ajv-errors/ajv/dist/compile/resolve.d.ts +12 -0
  56. package/compiled/better-ajv-errors/ajv/dist/compile/rules.d.ts +28 -0
  57. package/compiled/better-ajv-errors/ajv/dist/compile/util.d.ts +40 -0
  58. package/compiled/better-ajv-errors/ajv/dist/compile/validate/index.d.ts +42 -0
  59. package/compiled/better-ajv-errors/ajv/dist/compile/validate/subschema.d.ts +47 -0
  60. package/compiled/better-ajv-errors/ajv/dist/core.d.ts +173 -0
  61. package/compiled/better-ajv-errors/ajv/dist/runtime/validation_error.d.ts +7 -0
  62. package/compiled/better-ajv-errors/ajv/dist/types/index.d.ts +183 -0
  63. package/compiled/better-ajv-errors/ajv/dist/types/json-schema.d.ts +124 -0
  64. package/compiled/better-ajv-errors/ajv/dist/types/jtd-schema.d.ts +169 -0
  65. package/compiled/better-ajv-errors/index.js +1 -0
  66. package/compiled/better-ajv-errors/license +13 -0
  67. package/compiled/better-ajv-errors/package.json +1 -0
  68. package/compiled/better-ajv-errors/typings.d.ts +24 -0
  69. package/compiled/better-ajv-errors/uri-js/dist/es5/uri.all.d.ts +59 -0
  70. package/compiled/v8-compile-cache/index.js +1 -0
  71. package/compiled/v8-compile-cache/license +21 -0
  72. package/compiled/v8-compile-cache/package.json +1 -0
  73. package/dist/cli.d.ts +1 -0
  74. package/dist/cli.js +33 -0
  75. package/dist/config/defaults.d.ts +28 -0
  76. package/dist/config/defaults.js +98 -0
  77. package/dist/{types/config → config}/index.d.ts +2 -2
  78. package/dist/config/index.js +120 -0
  79. package/dist/config/mergeConfig.d.ts +30 -0
  80. package/dist/config/mergeConfig.js +26 -0
  81. package/dist/config/schema/deploy.d.ts +16 -0
  82. package/dist/config/schema/deploy.js +16 -0
  83. package/dist/config/schema/index.d.ts +466 -0
  84. package/dist/config/schema/index.js +95 -0
  85. package/dist/config/schema/output.d.ts +146 -0
  86. package/dist/config/schema/output.js +68 -0
  87. package/dist/config/schema/server.d.ts +182 -0
  88. package/dist/config/schema/server.js +107 -0
  89. package/dist/config/schema/source.d.ts +58 -0
  90. package/dist/config/schema/source.js +36 -0
  91. package/dist/config/schema/tools.d.ts +36 -0
  92. package/dist/config/schema/tools.js +19 -0
  93. package/dist/config/types/electron.d.ts +13 -0
  94. package/dist/config/types/electron.js +2 -0
  95. package/dist/config/types/index.d.ts +240 -0
  96. package/dist/config/types/index.js +2 -0
  97. package/dist/config/types/less.d.ts +10 -0
  98. package/dist/config/types/less.js +2 -0
  99. package/dist/config/types/sass.d.ts +8 -0
  100. package/dist/config/types/sass.js +2 -0
  101. package/dist/{types/config → config}/types/ssg.d.ts +8 -8
  102. package/dist/config/types/ssg.js +2 -0
  103. package/dist/config/types/test.d.ts +14 -0
  104. package/dist/config/types/test.js +2 -0
  105. package/dist/config/types/unbundle.d.ts +25 -0
  106. package/dist/config/types/unbundle.js +2 -0
  107. package/dist/{types/context.d.ts → context.d.ts} +12 -22
  108. package/dist/context.js +59 -0
  109. package/dist/index.d.ts +64 -0
  110. package/dist/index.js +177 -0
  111. package/dist/{types/initWatcher.d.ts → initWatcher.d.ts} +1 -1
  112. package/dist/initWatcher.js +75 -0
  113. package/dist/{types/loadEnv.d.ts → loadEnv.d.ts} +1 -1
  114. package/dist/loadEnv.js +21 -0
  115. package/dist/{types/loadPlugins.d.ts → loadPlugins.d.ts} +15 -15
  116. package/dist/loadPlugins.js +109 -0
  117. package/dist/manager.d.ts +72 -0
  118. package/dist/manager.js +24 -0
  119. package/dist/{types/pluginAPI.d.ts → pluginAPI.d.ts} +5 -6
  120. package/dist/pluginAPI.js +16 -0
  121. package/dist/{types/utils → utils}/commander.d.ts +1 -1
  122. package/dist/utils/commander.js +20 -0
  123. package/dist/{types/utils → utils}/repeatKeyWarning.d.ts +1 -1
  124. package/dist/utils/repeatKeyWarning.js +22 -0
  125. package/package.json +16 -29
  126. package/tsconfig.json +3 -4
  127. package/dist/js/modern/cli.js +0 -29
  128. package/dist/js/modern/config/defaults.js +0 -103
  129. package/dist/js/modern/config/index.js +0 -115
  130. package/dist/js/modern/config/mergeConfig.js +0 -22
  131. package/dist/js/modern/config/schema/deploy.js +0 -17
  132. package/dist/js/modern/config/schema/index.js +0 -107
  133. package/dist/js/modern/config/schema/output.js +0 -147
  134. package/dist/js/modern/config/schema/server.js +0 -170
  135. package/dist/js/modern/config/schema/source.js +0 -59
  136. package/dist/js/modern/config/schema/tools.js +0 -36
  137. package/dist/js/modern/config/types/index.js +0 -1
  138. package/dist/js/modern/config/types/less.js +0 -0
  139. package/dist/js/modern/config/types/sass.js +0 -0
  140. package/dist/js/modern/config/types/ssg.js +0 -0
  141. package/dist/js/modern/config/types/test.js +0 -0
  142. package/dist/js/modern/config/types/unbundle.js +0 -0
  143. package/dist/js/modern/context.js +0 -63
  144. package/dist/js/modern/index.js +0 -168
  145. package/dist/js/modern/initWatcher.js +0 -62
  146. package/dist/js/modern/loadEnv.js +0 -14
  147. package/dist/js/modern/loadPlugins.js +0 -117
  148. package/dist/js/modern/manager.js +0 -28
  149. package/dist/js/modern/pluginAPI.js +0 -11
  150. package/dist/js/modern/utils/commander.js +0 -19
  151. package/dist/js/modern/utils/repeatKeyWarning.js +0 -18
  152. package/dist/js/node/cli.js +0 -35
  153. package/dist/js/node/config/defaults.js +0 -110
  154. package/dist/js/node/config/index.js +0 -182
  155. package/dist/js/node/config/mergeConfig.js +0 -32
  156. package/dist/js/node/config/schema/deploy.js +0 -26
  157. package/dist/js/node/config/schema/index.js +0 -127
  158. package/dist/js/node/config/schema/output.js +0 -156
  159. package/dist/js/node/config/schema/server.js +0 -179
  160. package/dist/js/node/config/schema/source.js +0 -68
  161. package/dist/js/node/config/schema/tools.js +0 -43
  162. package/dist/js/node/config/types/index.js +0 -5
  163. package/dist/js/node/config/types/less.js +0 -0
  164. package/dist/js/node/config/types/sass.js +0 -0
  165. package/dist/js/node/config/types/ssg.js +0 -0
  166. package/dist/js/node/config/types/test.js +0 -0
  167. package/dist/js/node/config/types/unbundle.js +0 -0
  168. package/dist/js/node/context.js +0 -93
  169. package/dist/js/node/index.js +0 -328
  170. package/dist/js/node/initWatcher.js +0 -82
  171. package/dist/js/node/loadEnv.js +0 -30
  172. package/dist/js/node/loadPlugins.js +0 -129
  173. package/dist/js/node/manager.js +0 -45
  174. package/dist/js/node/pluginAPI.js +0 -54
  175. package/dist/js/node/utils/commander.js +0 -32
  176. package/dist/js/node/utils/repeatKeyWarning.js +0 -31
  177. package/dist/types/cli.d.ts +0 -1
  178. package/dist/types/config/defaults.d.ts +0 -28
  179. package/dist/types/config/mergeConfig.d.ts +0 -31
  180. package/dist/types/config/schema/deploy.d.ts +0 -16
  181. package/dist/types/config/schema/index.d.ts +0 -466
  182. package/dist/types/config/schema/output.d.ts +0 -146
  183. package/dist/types/config/schema/server.d.ts +0 -182
  184. package/dist/types/config/schema/source.d.ts +0 -58
  185. package/dist/types/config/schema/tools.d.ts +0 -36
  186. package/dist/types/config/types/index.d.ts +0 -239
  187. package/dist/types/config/types/less.d.ts +0 -10
  188. package/dist/types/config/types/sass.d.ts +0 -8
  189. package/dist/types/config/types/test.d.ts +0 -15
  190. package/dist/types/config/types/unbundle.d.ts +0 -28
  191. package/dist/types/index.d.ts +0 -61
  192. package/dist/types/manager.d.ts +0 -74
  193. package/modern.config.js +0 -6
  194. package/tests/.eslintrc.js +0 -6
  195. package/tests/btsm.test.ts +0 -20
  196. package/tests/config.test.ts +0 -146
  197. package/tests/context.test.ts +0 -85
  198. package/tests/fixtures/index-test/modern.server-runtime.config.js +0 -0
  199. package/tests/fixtures/index-test/package.json +0 -3
  200. package/tests/fixtures/load-plugin/not-found/package.json +0 -3
  201. package/tests/fixtures/load-plugin/not-found/test-plugin-a.js +0 -1
  202. package/tests/fixtures/load-plugin/user-plugins/package.json +0 -3
  203. package/tests/fixtures/load-plugin/user-plugins/test-plugin-a.js +0 -1
  204. package/tests/fixtures/load-plugin/user-plugins/test-plugin-b.js +0 -3
  205. package/tests/fixtures/load-plugin/user-plugins/test-plugin-c.js +0 -3
  206. package/tests/index.test.ts +0 -83
  207. package/tests/initWatcher.test.ts +0 -63
  208. package/tests/loadEnv.test.ts +0 -173
  209. package/tests/loadPlugin.test.ts +0 -116
  210. package/tests/mergeConfig.test.ts +0 -97
  211. package/tests/pluginAPI.test.ts +0 -19
  212. package/tests/repeatKeyWarning.test.ts +0 -68
  213. package/tests/schema.test.ts +0 -107
  214. package/tests/tsconfig.json +0 -11
  215. package/tests/utils.test.ts +0 -7
package/package.json CHANGED
@@ -11,20 +11,20 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.7.1",
14
+ "version": "1.9.1",
15
15
  "jsnext:source": "./src/index.ts",
16
- "types": "./dist/types/index.d.ts",
17
- "main": "./dist/js/node/index.js",
18
- "module": "./dist/js/treeshaking/index.js",
19
- "jsnext:modern": "./dist/js/modern/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "main": "./dist/index.js",
18
+ "module": "./dist/index.js",
19
+ "jsnext:modern": "./dist/index.js",
20
20
  "exports": {
21
21
  ".": {
22
22
  "node": {
23
23
  "jsnext:source": "./src/index.ts",
24
- "import": "./dist/js/modern/index.js",
25
- "require": "./dist/js/node/index.js"
24
+ "import": "./dist/index.js",
25
+ "require": "./dist/index.js"
26
26
  },
27
- "default": "./dist/js/treeshaking/index.js"
27
+ "default": "./dist/index.js"
28
28
  },
29
29
  "./bin": {
30
30
  "jsnext:source": "./src/cli.ts",
@@ -34,28 +34,19 @@
34
34
  "typesVersions": {
35
35
  "*": {
36
36
  "config": [
37
- "./dist/types/config/index.d.ts"
37
+ "./dist/config/index.d.ts"
38
38
  ]
39
39
  }
40
40
  },
41
41
  "bin": "./bin/modern-js.js",
42
42
  "dependencies": {
43
- "@babel/code-frame": "^7.14.5",
44
- "@babel/runtime": "^7",
45
- "@modern-js/load-config": "^1.3.0",
46
- "@modern-js/plugin": "^1.3.2",
47
- "@modern-js/utils": "^1.4.1",
48
- "address": "^1.1.2",
49
- "ajv": "^8.6.2",
50
- "ajv-keywords": "^5.0.0",
51
- "better-ajv-errors": "^0.7.0",
52
- "dotenv": "^10.0.0",
53
- "dotenv-expand": "^5.1.0",
54
- "v8-compile-cache": "^2.3.0"
43
+ "@modern-js/load-config": "^1.3.1",
44
+ "@modern-js/plugin": "^1.3.3",
45
+ "@modern-js/utils": "^1.6.0"
55
46
  },
56
47
  "devDependencies": {
57
48
  "@jest/types": "^27.0.6",
58
- "@modern-js/types": "^1.4.0",
49
+ "@modern-js/types": "1.5.1",
59
50
  "@scripts/build": "0.0.0",
60
51
  "@scripts/jest-config": "0.0.0",
61
52
  "@types/babel__code-frame": "^7.0.3",
@@ -69,25 +60,21 @@
69
60
  "btsm": "2.2.2",
70
61
  "jest": "^27",
71
62
  "sass": "^1.45.0",
63
+ "electron-builder": "22.7.0",
72
64
  "terser-webpack-plugin": "^5.1.4",
73
65
  "typescript": "^4",
74
66
  "webpack": "^5.71.0",
75
67
  "webpack-chain": "^6.5.1"
76
68
  },
77
69
  "sideEffects": false,
78
- "modernConfig": {
79
- "output": {
80
- "packageMode": "node-js"
81
- }
82
- },
83
70
  "publishConfig": {
84
71
  "registry": "https://registry.npmjs.org/",
85
72
  "access": "public"
86
73
  },
87
74
  "scripts": {
88
75
  "new": "modern new",
89
- "build": "modern build",
90
- "dev": "modern build --watch",
76
+ "build": "tsc",
77
+ "dev": "tsc --watch",
91
78
  "test": "jest"
92
79
  },
93
80
  "readme": "\n<p align=\"center\">\n <a href=\"https://modernjs.dev\" target=\"blank\"><img src=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png\" width=\"300\" alt=\"Modern.js Logo\" /></a>\n</p>\n<p align=\"center\">\n现代 Web 工程体系\n <br/>\n <a href=\"https://modernjs.dev\" target=\"blank\">\n modernjs.dev\n </a>\n</p>\n<p align=\"center\">\n The meta-framework suite designed from scratch for frontend-focused modern web development\n</p>\n\n# Introduction\n\n> The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.\n\n- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)\n\n## Getting Started\n\n- [Quick Start](https://modernjs.dev/docs/start)\n- [Guides](https://modernjs.dev/docs/guides)\n- [API References](https://modernjs.dev/docs/apis)\n\n## Contributing\n\n- [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)\n"
package/tsconfig.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "extends": "@modern-js/tsconfig/base",
3
3
  "compilerOptions": {
4
- "declaration": false,
5
- "jsx": "preserve",
4
+ "declaration": true,
5
+ "outDir": "./dist",
6
6
  "baseUrl": "./",
7
7
  "isolatedModules": true,
8
- "esModuleInterop": true,
9
- "paths": {}
8
+ "esModuleInterop": true
10
9
  },
11
10
  "include": ["src"]
12
11
  }
@@ -1,29 +0,0 @@
1
- // 这个文件跟 bin/modern-js.js 基本一样
2
- // 在开发阶段,因为 package.json 的 exports['./bin']['jsnext:source'] 配置
3
- // 了这个文件,所以需要保留, 后续如果找到更好的方式之后会移除这个文件
4
- import path from 'path';
5
- import { cli } from ".";
6
-
7
- const {
8
- version
9
- } = require("../../package.json"); // XXX: 通过这个方式去掉了 package.json 里面对于 @modern-js/module-tools 的 devDependencies 依赖
10
- // 然后可以正常的执行 modern build
11
-
12
-
13
- const kModuleToolsCliPath = path.resolve(__dirname, '../../../solutions/module-tools/src/index.ts');
14
- process.env.MODERN_JS_VERSION = version;
15
-
16
- if (!process.env.NODE_ENV) {
17
- process.env.NODE_ENV = // eslint-disable-next-line no-nested-ternary
18
- ['build', 'start', 'deploy'].includes(process.argv[2]) ? 'production' : process.argv[2] === 'test' ? 'test' : 'development';
19
- }
20
-
21
- cli.run(process.argv.slice(2), {
22
- plugins: {
23
- '@modern-js/module-tools': {
24
- cli: kModuleToolsCliPath,
25
- // 是否需要强制加载这个组件,跳过 loadPlugins 里面 filter 的检测逻辑
26
- forced: true
27
- }
28
- }
29
- });
@@ -1,103 +0,0 @@
1
- const sourceDefaults = {
2
- entries: undefined,
3
- disableDefaultEntries: false,
4
- entriesDir: './src',
5
- configDir: './config',
6
- apiDir: './api',
7
- envVars: [],
8
- globalVars: undefined,
9
- alias: undefined,
10
- moduleScopes: undefined,
11
- include: []
12
- };
13
- const outputDefaults = {
14
- assetPrefix: '/',
15
- htmlPath: 'html',
16
- jsPath: 'static/js',
17
- cssPath: 'static/css',
18
- mediaPath: 'static/media',
19
- path: 'dist',
20
- title: '',
21
- titleByEntries: undefined,
22
- meta: {
23
- charset: {
24
- charset: 'utf-8'
25
- },
26
- viewport: 'width=device-width, initial-scale=1.0, shrink-to-fit=no, viewport-fit=cover, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no',
27
- 'http-equiv': {
28
- 'http-equiv': 'x-ua-compatible',
29
- content: 'ie=edge'
30
- },
31
- renderer: 'webkit',
32
- layoutmode: 'standard',
33
- imagemode: 'force',
34
- 'wap-font-scale': 'no',
35
- 'format-detection': 'telephone=no'
36
- },
37
- metaByEntries: undefined,
38
- inject: 'head',
39
- injectByEntries: undefined,
40
- mountId: 'root',
41
- favicon: '',
42
- faviconByEntries: undefined,
43
- copy: undefined,
44
- scriptExt: undefined,
45
- disableHtmlFolder: false,
46
- disableCssModuleExtension: false,
47
- disableCssExtract: false,
48
- enableCssModuleTSDeclaration: false,
49
- disableMinimize: false,
50
- enableInlineStyles: false,
51
- enableInlineScripts: false,
52
- disableSourceMap: false,
53
- disableInlineRuntimeChunk: false,
54
- disableAssetsCache: false,
55
- enableLatestDecorators: false,
56
- polyfill: 'entry',
57
- dataUriLimit: 10000,
58
- templateParameters: {},
59
- templateParametersByEntries: undefined,
60
- cssModuleLocalIdentName: '[name]__[local]--[hash:base64:5]',
61
- enableModernMode: false,
62
- federation: undefined,
63
- disableNodePolyfill: false,
64
- enableTsLoader: false
65
- };
66
- const serverDefaults = {
67
- routes: undefined,
68
- publicRoutes: undefined,
69
- ssr: undefined,
70
- ssrByEntries: undefined,
71
- baseUrl: '/',
72
- port: 8080
73
- };
74
- const devDefaults = {
75
- assetPrefix: false,
76
- https: false
77
- };
78
- const deployDefaults = {
79
- domain: '',
80
- domainByEntries: undefined
81
- };
82
- const toolsDefaults = {
83
- webpack: undefined,
84
- babel: undefined,
85
- postcss: undefined,
86
- autoprefixer: undefined,
87
- lodash: undefined,
88
- devServer: undefined,
89
- tsLoader: undefined,
90
- terser: undefined,
91
- minifyCss: undefined
92
- };
93
- export const defaults = {
94
- source: sourceDefaults,
95
- output: outputDefaults,
96
- server: serverDefaults,
97
- dev: devDefaults,
98
- deploy: deployDefaults,
99
- tools: toolsDefaults,
100
- plugins: [],
101
- runtime: {},
102
- runtimeByEntries: {}
103
- };
@@ -1,115 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- import { loadConfig } from '@modern-js/load-config';
8
- import Ajv from 'ajv';
9
- import ajvKeywords from 'ajv-keywords';
10
- import { signale as logger, createDebugger, getPort, isDev, PLUGIN_SCHEMAS, chalk, getServerConfig } from '@modern-js/utils';
11
- import { mergeWith } from '@modern-js/utils/lodash';
12
- import betterAjvErrors from 'better-ajv-errors';
13
- import { codeFrameColumns } from '@babel/code-frame';
14
- import { repeatKeyWarning } from "../utils/repeatKeyWarning";
15
- import { defaults } from "./defaults";
16
- import { mergeConfig } from "./mergeConfig";
17
- import { patchSchema } from "./schema";
18
- const debug = createDebugger('resolve-config');
19
- export { defaults as defaultsConfig };
20
- export { mergeConfig };
21
- export * from "./types";
22
- export const addServerConfigToDeps = async (dependencies, appDirectory, serverConfigFile) => {
23
- const serverConfig = await getServerConfig(appDirectory, serverConfigFile);
24
-
25
- if (serverConfig) {
26
- dependencies.push(serverConfig);
27
- }
28
- };
29
- export const defineConfig = config => config;
30
- export const loadUserConfig = async (appDirectory, filePath, packageJsonConfig) => {
31
- const loaded = await loadConfig(appDirectory, filePath, packageJsonConfig);
32
- const config = !loaded ? {} : await (typeof loaded.config === 'function' ? loaded.config(0) : loaded.config);
33
- return {
34
- config: mergeWith({}, config || {}, (loaded === null || loaded === void 0 ? void 0 : loaded.pkgConfig) || {}),
35
- jsConfig: config || {},
36
- pkgConfig: (loaded === null || loaded === void 0 ? void 0 : loaded.pkgConfig) || {},
37
- filePath: loaded === null || loaded === void 0 ? void 0 : loaded.path,
38
- dependencies: (loaded === null || loaded === void 0 ? void 0 : loaded.dependencies) || []
39
- };
40
- };
41
-
42
- const showAdditionalPropertiesError = error => {
43
- if (error.keyword === 'additionalProperties' && error.params.additionalProperty) {
44
- const target = [error.instancePath.slice(1), error.params.additionalProperty].filter(Boolean).join('.');
45
- const name = Object.keys(PLUGIN_SCHEMAS).find(key => PLUGIN_SCHEMAS[key].some(schemaItem => schemaItem.target === target));
46
-
47
- if (name) {
48
- logger.warn(`The configuration of ${chalk.bold(target)} is provided by plugin ${chalk.bold(name)}. Please use ${chalk.bold('yarn new')} to enable the corresponding capability.\n`);
49
- }
50
- }
51
- };
52
-
53
- export const resolveConfig = async (loaded, configs, schemas, restartWithExistingPort, argv, onSchemaError = showAdditionalPropertiesError) => {
54
- var _validate$errors;
55
-
56
- const {
57
- config: userConfig,
58
- jsConfig,
59
- pkgConfig
60
- } = loaded;
61
- const ajv = new Ajv({
62
- $data: true,
63
- strict: false
64
- });
65
- ajvKeywords(ajv);
66
- const validateSchema = patchSchema(schemas);
67
- const validate = ajv.compile(validateSchema);
68
- repeatKeyWarning(validateSchema, jsConfig, pkgConfig); // validate user config.
69
-
70
- const valid = validate(userConfig);
71
-
72
- if (!valid && (_validate$errors = validate.errors) !== null && _validate$errors !== void 0 && _validate$errors.length) {
73
- var _validate$errors2;
74
-
75
- onSchemaError(validate === null || validate === void 0 ? void 0 : validate.errors[0]);
76
- const errors = betterAjvErrors(validateSchema, userConfig, (_validate$errors2 = validate.errors) === null || _validate$errors2 === void 0 ? void 0 : _validate$errors2.map(e => _objectSpread(_objectSpread({}, e), {}, {
77
- dataPath: e.instancePath
78
- })), {
79
- format: 'js',
80
- indent: 2
81
- });
82
- logger.log(codeFrameColumns(JSON.stringify(userConfig, null, 2), {
83
- start: errors === null || errors === void 0 ? void 0 : errors[0].start,
84
- end: errors === null || errors === void 0 ? void 0 : errors[0].end
85
- }, {
86
- highlightCode: true,
87
- message: errors === null || errors === void 0 ? void 0 : errors[0].error
88
- }));
89
- throw new Error(`Validate configuration error`);
90
- } // validate config from plugins.
91
-
92
-
93
- for (const config of configs) {
94
- if (!validate(config)) {
95
- logger.error(validate.errors);
96
- throw new Error(`Validate configuration error.`);
97
- }
98
- }
99
-
100
- const resolved = mergeConfig([defaults, ...configs, userConfig]);
101
- resolved._raw = loaded.config;
102
-
103
- if (isDev() && argv[0] === 'dev') {
104
- if (restartWithExistingPort > 0) {
105
- // dev server is restarted, should use existing port number
106
- resolved.server.port = restartWithExistingPort;
107
- } else {
108
- // get port for new dev server
109
- resolved.server.port = await getPort(resolved.server.port);
110
- }
111
- }
112
-
113
- debug('resolved %o', resolved);
114
- return resolved;
115
- };
@@ -1,22 +0,0 @@
1
- import { mergeWith } from '@modern-js/utils/lodash';
2
- import { isFunction } from '@modern-js/utils';
3
-
4
- /**
5
- * merge configuration from modern.config.js and plugins.
6
- *
7
- * @param configs - Configuration from modern.config.ts or plugin's config hook.
8
- * @returns - normalized user config.
9
- */
10
- export const mergeConfig = configs => mergeWith({}, ...configs, (target, source) => {
11
- if (Array.isArray(target)) {
12
- if (Array.isArray(source)) {
13
- return [...target, ...source];
14
- } else {
15
- return typeof source !== 'undefined' ? [...target, source] : target;
16
- }
17
- } else if (isFunction(source)) {
18
- return typeof target !== 'undefined' ? [target, source] : [source];
19
- }
20
-
21
- return undefined;
22
- });
@@ -1,17 +0,0 @@
1
- import { ENTRY_NAME_PATTERN } from '@modern-js/utils';
2
- export const deploy = {
3
- type: 'object',
4
- properties: {
5
- domain: {
6
- type: ['array', 'string']
7
- },
8
- domainByEntries: {
9
- type: 'object',
10
- patternProperties: {
11
- [ENTRY_NAME_PATTERN]: {
12
- type: ['array', 'string']
13
- }
14
- }
15
- }
16
- }
17
- };
@@ -1,107 +0,0 @@
1
- import { isObject, createDebugger } from '@modern-js/utils';
2
- import { cloneDeep } from '@modern-js/utils/lodash';
3
- import { source } from "./source";
4
- import { output } from "./output";
5
- import { server } from "./server";
6
- import { deploy } from "./deploy";
7
- import { tools } from "./tools";
8
- const debug = createDebugger('validate-schema');
9
- const plugins = {
10
- type: 'array',
11
- additionalProperties: false
12
- };
13
- const dev = {
14
- type: 'object',
15
- properties: {
16
- assetPrefix: {
17
- type: ['boolean', 'string']
18
- },
19
- https: {
20
- type: 'boolean'
21
- }
22
- },
23
- additionalProperties: false
24
- };
25
- export const patchSchema = pluginSchemas => {
26
- const finalSchema = cloneDeep({
27
- type: 'object',
28
- additionalProperties: false,
29
- properties: {
30
- source,
31
- output,
32
- server,
33
- deploy,
34
- plugins,
35
- dev,
36
- tools
37
- }
38
- });
39
-
40
- const findTargetNode = props => {
41
- let node = finalSchema.properties;
42
-
43
- for (const prop of props) {
44
- node = node[prop];
45
-
46
- if (!node || !isObject(node)) {
47
- throw new Error(`add schema ${props.join('.')} error`);
48
- }
49
-
50
- node.properties = node.hasOwnProperty('properties') ? node.properties : {};
51
- node = node.properties;
52
- }
53
-
54
- return node;
55
- };
56
-
57
- const finalPluginSchemas = [];
58
- pluginSchemas.forEach(item => {
59
- if (Array.isArray(item)) {
60
- finalPluginSchemas.push(...item);
61
- } else {
62
- finalPluginSchemas.push(item);
63
- }
64
- });
65
-
66
- for (const {
67
- target,
68
- schema
69
- } of finalPluginSchemas) {
70
- if (!target) {
71
- throw new Error(`should return target property in plugin schema.`);
72
- }
73
-
74
- const props = target.split('.');
75
- const mountProperty = props.pop();
76
- const targetNode = findTargetNode(props);
77
-
78
- if (targetNode.hasOwnProperty(mountProperty)) {
79
- throw new Error(`${target} already exists in current validate schema`);
80
- }
81
-
82
- targetNode[mountProperty] = cloneDeep(schema);
83
- }
84
-
85
- debug(`final validate schema: %o`, finalSchema);
86
- return finalSchema;
87
- };
88
- export const traverseSchema = schema => {
89
- const keys = [];
90
-
91
- const traverse = ({
92
- properties
93
- }, old = []) => {
94
- for (const key of Object.keys(properties)) {
95
- const current = [...old, key];
96
-
97
- if (properties[key].type === 'object' && properties[key].properties) {
98
- traverse(properties[key], current);
99
- } else {
100
- keys.push(current.join('.'));
101
- }
102
- }
103
- };
104
-
105
- traverse(schema);
106
- return keys;
107
- };
@@ -1,147 +0,0 @@
1
- import { ENTRY_NAME_PATTERN } from '@modern-js/utils';
2
- export const output = {
3
- type: 'object',
4
- additionalProperties: false,
5
- properties: {
6
- assetPrefix: {
7
- type: 'string'
8
- },
9
- path: {
10
- type: 'string'
11
- },
12
- jsPath: {
13
- type: 'string'
14
- },
15
- cssPath: {
16
- type: 'string'
17
- },
18
- htmlPath: {
19
- type: 'string'
20
- },
21
- mediaPath: {
22
- type: 'string'
23
- },
24
- mountId: {
25
- type: 'string'
26
- },
27
- favicon: {
28
- type: 'string'
29
- },
30
- faviconByEntries: {
31
- type: 'object',
32
- patternProperties: {
33
- [ENTRY_NAME_PATTERN]: {
34
- type: 'string'
35
- }
36
- }
37
- },
38
- title: {
39
- type: 'string'
40
- },
41
- titleByEntries: {
42
- type: 'object',
43
- patternProperties: {
44
- [ENTRY_NAME_PATTERN]: {
45
- type: 'string'
46
- }
47
- }
48
- },
49
- meta: {
50
- type: 'object'
51
- },
52
- metaByEntries: {
53
- type: 'object',
54
- patternProperties: {
55
- [ENTRY_NAME_PATTERN]: {
56
- type: 'object'
57
- }
58
- }
59
- },
60
- inject: {
61
- enum: [true, 'head', 'body', false]
62
- },
63
- injectByEntries: {
64
- type: 'object',
65
- patternProperties: {
66
- [ENTRY_NAME_PATTERN]: {
67
- enum: [true, 'head', 'body', false]
68
- }
69
- }
70
- },
71
- copy: {
72
- type: 'array'
73
- },
74
- scriptExt: {
75
- type: 'object'
76
- },
77
- disableTsChecker: {
78
- type: 'boolean'
79
- },
80
- disableHtmlFolder: {
81
- type: 'boolean'
82
- },
83
- disableCssModuleExtension: {
84
- type: 'boolean'
85
- },
86
- disableCssExtract: {
87
- type: 'boolean'
88
- },
89
- enableCssModuleTSDeclaration: {
90
- type: 'boolean'
91
- },
92
- disableMinimize: {
93
- type: 'boolean'
94
- },
95
- enableInlineStyles: {
96
- type: 'boolean'
97
- },
98
- enableInlineScripts: {
99
- type: 'boolean'
100
- },
101
- disableSourceMap: {
102
- type: 'boolean'
103
- },
104
- disableInlineRuntimeChunk: {
105
- type: 'boolean'
106
- },
107
- disableAssetsCache: {
108
- type: 'boolean'
109
- },
110
- enableLatestDecorators: {
111
- type: 'boolean'
112
- },
113
- enableTsLoader: {
114
- type: 'boolean'
115
- },
116
- dataUriLimit: {
117
- type: 'number'
118
- },
119
- templateParameters: {
120
- type: 'object'
121
- },
122
- templateParametersByEntries: {
123
- type: 'object',
124
- patternProperties: {
125
- [ENTRY_NAME_PATTERN]: {
126
- type: 'object'
127
- }
128
- }
129
- },
130
- polyfill: {
131
- type: 'string',
132
- enum: ['usage', 'entry', 'off', 'ua']
133
- },
134
- cssModuleLocalIdentName: {
135
- type: 'string'
136
- },
137
- federation: {
138
- type: 'object'
139
- },
140
- disableNodePolyfill: {
141
- type: 'boolean'
142
- },
143
- enableModernMode: {
144
- type: 'boolean'
145
- }
146
- }
147
- };