@epxing/cli 0.5.0-beta.1 → 0.5.0-beta.11
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/API.md +5 -5
- package/README.md +121 -98
- package/dist/cli.mjs +20 -12
- package/dist/lazy-lib.mjs +42 -27
- package/dist/lib-vite-config.mjs +1 -0
- package/dist/platform-version.mjs +48 -0
- package/dist/skills/epxing-frontend-vue3-migrate/SKILL.md +213 -144
- package/dist/skills/epxing-frontend-vue3-migrate/pitfalls.md +743 -498
- package/dist/skills/epxing-frontend-vue3-migrate/scripts/fix-eval-paths.cjs +255 -0
- package/dist/tools/chunks/7NAADJFP.mjs +45 -0
- package/dist/tools/chunks/{HSJSTJH6.mjs → 7YE2UHC6.mjs} +2 -2
- package/dist/tools/chunks/J7B2EWKH.mjs +8 -0
- package/dist/tools/chunks/{QL4QZFQT.mjs → U27ZPQAM.mjs} +3 -3
- package/dist/tools/chunks/VASFHXYG.mjs +251 -0
- package/dist/tools/epx-create/scaffold.mjs +67 -51
- package/dist/tools/epx-migrate/detect-vue3-risks.mjs +1 -1
- package/dist/tools/epx-migrate/fix-date-formats.mjs +1 -1
- package/dist/tools/epx-migrate/fix-theme-styles.mjs +1 -1
- package/dist/tools/epx-migrate/migrate.mjs +66 -266
- package/dist/tools/epx-migrate/verify-components.mjs +6 -6
- package/dist/vite.mjs +2 -2
- package/package.json +8 -6
- package/dist/tools/chunks/6CGUHPTB.mjs +0 -32
- package/dist/tools/chunks/H4POBCHI.mjs +0 -1
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
var
|
|
1
|
+
var A=Object.defineProperty;var d=(i,n)=>A(i,"name",{value:n,configurable:!0});var _=`import { createRequire } from 'node:module'
|
|
2
|
+
import path from 'node:path'
|
|
3
|
+
import { spawnSync } from 'node:child_process'
|
|
4
|
+
|
|
5
|
+
const require = createRequire(import.meta.url)
|
|
6
|
+
const args = process.argv.slice(2)
|
|
7
|
+
const full = args.includes('--full') || process.env.npm_config_full === 'true'
|
|
8
|
+
const lazy = full ? 'false' : (process.env.LAZY_LIB || 'true')
|
|
9
|
+
const vite = path.join(path.dirname(require.resolve('vite/package.json')), 'bin/vite.js')
|
|
10
|
+
const result = spawnSync(process.execPath, [vite, 'build', ...args.filter(arg => arg !== '--full')], {
|
|
11
|
+
stdio: 'inherit', env: { ...process.env, LAZY_LIB: lazy }
|
|
12
|
+
})
|
|
13
|
+
if (result.error) throw result.error
|
|
14
|
+
process.exit(result.status ?? 1)
|
|
15
|
+
`;import l from"node:fs";import m from"node:path";import{execSync as b}from"node:child_process";import{fileURLToPath as S,pathToFileURL as j}from"node:url";function I(i="5.3.0-beta.2"){let n=i.match(/^[~^]?(\d+)\.(\d+)\.(\d+)(?:-([\w.-]+))?$/);if(!n)return!1;let[,o,t,p,a]=n,r=Number(o)*1e6+Number(t)*1e3+Number(p);return r!==5003e3?r>5003e3:!a||/^beta\.(\d+)$/.test(a)&&Number(a.slice(5))>=2}d(I,"usesAutomaticStyles");var h=["@epxing/core/style.css","@epxing/components/style.css","@epxing/business/style.css"];function v(i,n){let o={...i,"build-lib.mjs":_,"package.json":JSON.stringify({name:"__NAME__",version:"0.1.0",private:!0,runtime:"vue3",type:"module",scripts:{dev:"vite","build:lib":"node build-lib.mjs","build:lib:full":"node build-lib.mjs --full","build:lib:lazy":"cross-env LAZY_LIB=true vite build","build:app":"vite build --mode app",preview:"vite preview"},dependencies:{"@epxing/core":"__PACKAGES_VERSION__","@epxing/components":"__PACKAGES_VERSION__","@epxing/utils":"__PACKAGES_VERSION__","@epxing/business":"__PACKAGES_VERSION__","@epxing/theme":"__PACKAGES_VERSION__",vue:"3.5.39","vue-router":"4.6.4",vuex:"4.1.0","element-plus":"2.14.3"},devDependencies:{"@epxing/cli":"__CLI_VERSION__","@epxing/icons":"__PACKAGES_VERSION__",vite:"^6.0.0","@vitejs/plugin-vue":"^5.2.1","@vitejs/plugin-vue-jsx":"^4.1.1",sass:"^1.83.3","cross-env":"^7.0.3"}},null,2)+`
|
|
2
16
|
`,"vite.config.mjs":`import path from 'node:path'
|
|
3
17
|
import { fileURLToPath } from 'node:url'
|
|
4
18
|
import { createRequire } from 'node:module'
|
|
@@ -41,6 +55,7 @@ export default defineConfig(({ command, mode }) => {
|
|
|
41
55
|
quietDeps: true, silenceDeprecations: ['import', 'legacy-js-api', 'global-builtin']
|
|
42
56
|
} } },
|
|
43
57
|
build: library ? {
|
|
58
|
+
copyPublicDir: false,
|
|
44
59
|
outDir: 'lib',
|
|
45
60
|
lib: { entry: path.resolve(root, 'src/index.js'), name: 'library.' + pkg.name, formats: ['umd'], fileName: () => 'index.js' },
|
|
46
61
|
rollupOptions: { output: { exports: 'default', assetFileNames: asset =>
|
|
@@ -48,36 +63,23 @@ export default defineConfig(({ command, mode }) => {
|
|
|
48
63
|
} : { outDir: 'dist' }
|
|
49
64
|
}
|
|
50
65
|
})
|
|
51
|
-
`,"src/main.js":`import { createApp } from '@epxing/core'
|
|
52
|
-
import
|
|
66
|
+
`,"src/main.js":`import { createApp, createFrameRouter } from '@epxing/core'
|
|
67
|
+
// import { installLegacyFrame } from '@epxing/core'
|
|
68
|
+
import Components from '@epxing/components'
|
|
53
69
|
import Business from '@epxing/business'
|
|
54
70
|
import '@epxing/theme'
|
|
55
|
-
import App from './App.vue'
|
|
56
71
|
import product from './index'
|
|
57
72
|
|
|
58
|
-
|
|
73
|
+
// core \u63D0\u4F9B\u57FA\u7840\u8DEF\u7531\u89C6\u56FE\uFF1B\u672A\u4F7F\u7528\u4E1A\u52A1\u529F\u80FD\u65F6\u53EF\u79FB\u9664 Business \u7684\u5BFC\u5165\u548C\u5B89\u88C5\u3002
|
|
74
|
+
const app = createApp({ router: createFrameRouter() })
|
|
59
75
|
app.use(Components)
|
|
60
76
|
app.use(Business)
|
|
77
|
+
// \u9700\u8981\u52A0\u8F7D\u4F9D\u8D56 window.frame \u7684\u65E7\u8FDC\u7A0B\u5E93\u65F6\uFF0C\u53D6\u6D88\u5BFC\u5165\u4E0E\u8C03\u7528\u7684\u6CE8\u91CA\uFF08core >= 5.3.0-beta.5\uFF09\u3002
|
|
78
|
+
// installLegacyFrame(app)
|
|
61
79
|
app.use(product)
|
|
62
80
|
app.mount('#app')
|
|
63
|
-
`,"src/App.vue":`<script setup>
|
|
64
|
-
import { ref } from 'vue'
|
|
65
|
-
const count = ref(0)
|
|
66
|
-
</script>
|
|
67
|
-
|
|
68
|
-
<template>
|
|
69
|
-
<main class="product-start">
|
|
70
|
-
<h1>__NAME__</h1>
|
|
71
|
-
<p>\u4EA7\u54C1\u5DF2\u542F\u52A8\uFF0C\u53EF\u4EE5\u5F00\u59CB\u5F00\u53D1\u3002</p>
|
|
72
|
-
<button @click="count++">\u70B9\u51FB {{ count }} \u6B21</button>
|
|
73
|
-
</main>
|
|
74
|
-
</template>
|
|
75
|
-
|
|
76
|
-
<style scoped>
|
|
77
|
-
.product-start { padding: var(--epx-space-4, 24px); color: var(--epx-text); }
|
|
78
|
-
</style>
|
|
79
81
|
`,"src/__DIRNAME__/DemoList.vue":`<script>
|
|
80
|
-
import { EntityList } from '@epxing/
|
|
82
|
+
import { EntityList } from '@epxing/components'
|
|
81
83
|
export default {
|
|
82
84
|
name: 'epx-__NAME__-demo-list',
|
|
83
85
|
extends: EntityList
|
|
@@ -102,15 +104,17 @@ npx epxing lib --full
|
|
|
102
104
|
npm run build:app
|
|
103
105
|
\`\`\`
|
|
104
106
|
|
|
105
|
-
\u672C\u5730\u9884\u89C8\u9ED8\u8BA4\u7AEF\u53E3 8080\uFF0C\u542F\u52A8\
|
|
106
|
-
`,"PRODUCT-GUIDE.md":
|
|
107
|
+
\u672C\u5730\u9884\u89C8\u9ED8\u8BA4\u7AEF\u53E3 8080\uFF0C\u9ED8\u8BA4\u6253\u5F00\u5E73\u53F0\u7CFB\u7EDF\u3002\u542F\u52A8\u524D\u5728 .env.development.local \u914D\u7F6E\u540E\u7AEF\u53CA\u5BA2\u6237\u7AEF\u3001\u7CFB\u7EDF\u3001\u5E94\u7528\u53C2\u6570\uFF1B\u767B\u5F55\u3001\u83DC\u5355\u548C\u9996\u9875\u4F7F\u7528\u5E73\u53F0\u914D\u7F6E\u3002
|
|
108
|
+
`,"PRODUCT-GUIDE.md":y};if(!I(n)){let t=h.map(p=>`import '${p}'`).join(`
|
|
107
109
|
`);for(let p of["src/main.js","PRODUCT-GUIDE.md"])o[p]=o[p].replace("import '@epxing/theme'",`import '@epxing/theme'
|
|
108
|
-
`+
|
|
110
|
+
`+t)}return o}d(v,"createPackageTemplates");var y=`# \u4EA7\u54C1\u5F00\u53D1\u4E0E\u5347\u7EA7\u4F7F\u7528\u8BF4\u660E
|
|
109
111
|
|
|
110
112
|
<!-- epxing-generated-product-guide -->
|
|
111
113
|
|
|
112
114
|
\u5E73\u53F0\u5305\u7248\u672C\uFF1A\`__PACKAGES_VERSION__\`\uFF1BCLI \u7248\u672C\uFF1A\`__CLI_VERSION__\`\u3002CLI \u4E0E\u5E73\u53F0\u5305\u5206\u522B\u5347\u7EA7\u3002
|
|
113
115
|
|
|
116
|
+
\u521B\u5EFA\u6216\u5347\u7EA7\u65F6\u4E0D\u586B\u7248\u672C\uFF0CCLI \u81EA\u52A8\u9009\u62E9\u6700\u65B0 beta\uFF08\u6CA1\u6709 beta \u65F6\u4F7F\u7528 latest\uFF09\uFF0C\u5E76\u5C06\u5177\u4F53\u7248\u672C\u5199\u5165\u4F9D\u8D56\u3002\u9700\u8981\u590D\u73B0\u6307\u5B9A\u7248\u672C\u65F6\u4F7F\u7528 --packages-version\uFF1B\u57FA\u7840\u7EC4\u4EF6\u7EDF\u4E00\u4ECE @epxing/components \u5BFC\u5165\u3002
|
|
117
|
+
|
|
114
118
|
## \u5B89\u88C5\u4E0E\u542F\u52A8
|
|
115
119
|
|
|
116
120
|
\`\`\`sh
|
|
@@ -118,37 +122,43 @@ npm install --registry https://registry.npmjs.org/
|
|
|
118
122
|
npm run dev
|
|
119
123
|
\`\`\`
|
|
120
124
|
|
|
121
|
-
\u672C\u5730\u9ED8\u8BA4 http://localhost:8080\u3002\`.env.development.local\` \
|
|
125
|
+
\u672C\u5730\u9ED8\u8BA4 \`http://localhost:8080\`\uFF0C\u6253\u5F00\u7684\u662F\u5E73\u53F0\u7CFB\u7EDF\u3002\u5148\u5728 \`.env.development.local\` \u914D\u7F6E IP\u3001BASE_PROJECT_NAME\u3001BASE_AUTH_NAME\u3001BASE_CLIENT_ID\u3001BASE_SYSTEM_ID\u3001BASE_APP_ID\uFF0C\u6307\u5411\u5B9E\u9645\u540E\u7AEF\u548C\u5E94\u7528\u3002\u767B\u5F55\u3001\u83DC\u5355\u3001\u6743\u9650\u3001\u9996\u9875\u5747\u7531\u5E73\u53F0\u63D0\u4F9B\uFF0C\u9700\u8981\u53EF\u7528\u540E\u7AEF\u3002
|
|
122
126
|
|
|
123
127
|
## \u5E94\u7528\u5165\u53E3
|
|
124
128
|
|
|
125
129
|
\`\`\`js
|
|
126
|
-
import { createApp } from '@epxing/core'
|
|
127
|
-
import
|
|
130
|
+
import { createApp, createFrameRouter } from '@epxing/core'
|
|
131
|
+
// import { installLegacyFrame } from '@epxing/core'
|
|
132
|
+
import Components from '@epxing/components'
|
|
128
133
|
import Business from '@epxing/business'
|
|
129
134
|
import '@epxing/theme'
|
|
130
|
-
import App from './App.vue'
|
|
131
135
|
import product from './index'
|
|
132
136
|
|
|
133
|
-
const app = createApp({
|
|
137
|
+
const app = createApp({ router: createFrameRouter() })
|
|
134
138
|
app.use(Components)
|
|
135
139
|
app.use(Business)
|
|
140
|
+
// \u9700\u8981\u52A0\u8F7D\u4F9D\u8D56 window.frame \u7684\u65E7\u8FDC\u7A0B\u5E93\u65F6\uFF0C\u53D6\u6D88\u5BFC\u5165\u4E0E\u8C03\u7528\u7684\u6CE8\u91CA\uFF08core >= 5.3.0-beta.5\uFF09\u3002
|
|
141
|
+
// installLegacyFrame(app)
|
|
136
142
|
app.use(product)
|
|
137
143
|
app.mount('#app')
|
|
138
144
|
\`\`\`
|
|
139
145
|
|
|
140
146
|
createApp \u8FD4\u56DE Vue App\uFF0C\u9ED8\u8BA4\u521B\u5EFA\u72EC\u7ACB store\u3001hash router \u548C HTTP \u5BA2\u6237\u7AEF\u3002\u9700\u8981\u81EA\u5B9A\u4E49\u65F6\u4F20\u5165 \`{ rootComponent, store, router, http: productHttp }\`\u3002\u4EA7\u54C1 HTTP \u5BA2\u6237\u7AEF\u9700\u5B9E\u73B0\u9875\u9762\u5B9E\u9645\u8C03\u7528\u7684 find/get/list/save \u7B49\u534F\u8BAE\u3002
|
|
141
147
|
|
|
148
|
+
installLegacyFrame \u9ED8\u8BA4\u6CE8\u91CA\uFF0C\u9700\u517C\u5BB9\u4F9D\u8D56 window.frame \u7684\u65E7\u8FDC\u7A0B\u5E93\u65F6\u624B\u52A8\u53D6\u6D88\u4E24\u5904\u6CE8\u91CA\u3002\u8981\u6C42 core 5.3.0-beta.5 \u6216\u4EE5\u4E0A\u7248\u672C\uFF0C\u5728\u6240\u9700\u7EC4\u4EF6\u5305\u5B89\u88C5\u540E\u3001\u8FDC\u7A0B\u5E93\u52A0\u8F7D\u524D\u8C03\u7528\uFF1B\u5B83\u590D\u7528\u5DF2\u5B89\u88C5\u5305\u7684\u5171\u4EAB\u7EC4\u4EF6\uFF0C\u4E0D\u81EA\u52A8\u5B89\u88C5 business \u6216 dashboard\u3002\u65E7\u63D2\u4EF6\u7684 Vue2 \u6E32\u67D3\u517C\u5BB9\u4ECD\u7531\u8FDC\u7A0B\u52A0\u8F7D\u5668\u81EA\u52A8\u9009\u62E9\u3002
|
|
149
|
+
|
|
142
150
|
\u4ECE\u5E73\u53F0\u5305 5.3.0-beta.2 \u8D77\uFF0Ccore\u3001component/components\u3001business\u3001designer\u3001dashboard \u7684 JS \u5165\u53E3\u81EA\u52A8\u52A0\u8F7D\u672C\u5305\u805A\u5408\u6837\u5F0F\uFF0C\u6839\u5BFC\u5165\u548C\u7EC4\u4EF6\u5B50\u8DEF\u5F84\u90FD\u65E0\u9700\u624B\u52A8 import style.css\u3002utils \u548C icons \u5DE5\u5177\u4E0D\u52A0\u8F7D UI \u6837\u5F0F\uFF1Btheme \u4ECD\u662F\u663E\u5F0F\u4F7F\u7528\u7684 SCSS \u6E90\u7801\u5305\u3002\u81EA\u52A8\u52A0\u8F7D\u6309\u5305\u805A\u5408\uFF0C\u4E0D\u662F\u5355\u4E2A\u7EC4\u4EF6\u7684 CSS \u88C1\u526A\u3002
|
|
143
151
|
|
|
144
152
|
\u4FDD\u7559 style.css \u5165\u53E3\u4EE5\u517C\u5BB9\u65E7\u4EE3\u7801\uFF1B\u5DF2\u6709\u624B\u52A8\u5BFC\u5165\u53EF\u4EE5\u5220\u9664\u3002\u4EA7\u54C1\u8986\u76D6\u6837\u5F0F\u653E\u5728\u6846\u67B6\u5BFC\u5165\u4E4B\u540E\u3002CLI \u6307\u5B9A\u65E7\u7248\u672C\u6216\u65E0\u6CD5\u786E\u5B9A\u7248\u672C\u4E0B\u9650\u7684\u6807\u7B7E\u65F6\uFF0C\u4F1A\u4FDD\u5B88\u4FDD\u7559\u663E\u5F0F CSS \u5BFC\u5165\u3002
|
|
145
153
|
|
|
146
|
-
\
|
|
154
|
+
\u9ED8\u8BA4\u6839\u7EC4\u4EF6\u7531 core \u63D0\u4F9B\uFF0C\u8D1F\u8D23\u8DEF\u7531\u51FA\u53E3\u3001\u8DEF\u7531\u5237\u65B0\u7B56\u7565\u548C\u4E3B\u9898\u521D\u59CB\u5316\uFF1BcreateFrameRouter \u63D0\u4F9B\u5E73\u53F0\u8DEF\u7531\u548C\u767B\u5F55\u5B88\u536B\u3002core \u63D0\u4F9B\u7684 App \u5728\u5E94\u7528\u914D\u7F6E\u52A0\u8F7D\u540E\u8BFB\u53D6 FIRST_PAGE / MOBILE_FIRST_PAGE\uFF0C\u8FDB\u5165\u7CFB\u7EDF\u9996\u9875\uFF0C\u4E0D\u5E94\u76F4\u63A5\u66FF\u6362\u6700\u5916\u5C42\u8DEF\u7531\u6839\u7EC4\u4EF6\u3002components \u63D0\u4F9B AppIndex\u3001\u767B\u5F55\u548C\u57FA\u7840\u7EC4\u4EF6\uFF0C\u4EA7\u54C1\u901A\u8FC7 app.use(product) \u6CE8\u518C\u81EA\u5DF1\u7684\u7EC4\u4EF6\u3002\u672A\u4F7F\u7528\u5F85\u529E\u3001\u5E2E\u52A9\u7B49\u4E1A\u52A1\u529F\u80FD\u65F6\uFF0C\u53EF\u79FB\u9664 Business \u7684\u5BFC\u5165\u548C\u5B89\u88C5\u3002
|
|
155
|
+
|
|
156
|
+
\u9700\u8981\u5B8C\u5168\u81EA\u5EFA\u5E94\u7528\u65F6\uFF0C\u624D\u4F20\u5165\u81EA\u5DF1\u7684 rootComponent\u3001router \u6216 routes\u3002\u4EA7\u54C1\u7EC4\u4EF6\u653E\u5728 src/__DIRNAME__/\uFF0C\u901A\u8FC7\u5E73\u53F0\u9875\u9762\u7EC4\u4EF6\u914D\u7F6E\u4F7F\u7528\uFF1B\u5F00\u53D1\u5165\u53E3 src/main.js \u4E0D\u8FDB\u5165\u8FDC\u7A0B\u4EA7\u54C1\u5E93\uFF0C\u5E93\u6784\u5EFA\u53EA\u8BFB\u53D6 src/index.js\u3002
|
|
147
157
|
|
|
148
158
|
## \u7EC4\u4EF6\u4E0E\u5DE5\u5177
|
|
149
159
|
|
|
150
160
|
\`\`\`js
|
|
151
|
-
import { EntityList, AddForm, AddFormItem } from '@epxing/
|
|
161
|
+
import { EntityList, AddForm, AddFormItem } from '@epxing/components'
|
|
152
162
|
import { UserFind, EntityTreeManage } from '@epxing/business'
|
|
153
163
|
import { mixins, getSystemMeta, getFileUrl, http, createFieldFactory } from '@epxing/core'
|
|
154
164
|
import { cloneDeep, moment, resolvePlaceholders, storage } from '@epxing/utils'
|
|
@@ -165,7 +175,7 @@ export default {
|
|
|
165
175
|
|
|
166
176
|
\u9700\u8981\u8BBE\u8BA1\u5668/\u770B\u677F\u65F6\uFF0C\u5B89\u88C5\u540C\u7248\u672C \`@epxing/designer\` / \`@epxing/dashboard\`\uFF0C\u5728\u672C\u5730\u5E94\u7528\u5BFC\u5165\u5E76\u5B89\u88C5\u63D2\u4EF6\uFF0C\u6837\u5F0F\u81EA\u52A8\u52A0\u8F7D\u3002\u8FDC\u7A0B\u4EA7\u54C1\u4F7F\u7528\u516C\u5F00\u7EC4\u4EF6\uFF0C\u5BBF\u4E3B\u8D1F\u8D23\u5B89\u88C5\u8BBE\u8BA1/\u4E1A\u52A1\u63D2\u4EF6\u53CA\u52A0\u8F7D\u5176\u6837\u5F0F\u3002
|
|
167
177
|
|
|
168
|
-
\u5404\u5305 API.md \u968F\u5B89\u88C5\u5305\u63D0\u4F9B\uFF0C\u53EF\u5728 node_modules/@epxing/<\u5305\u540D>/API.md \u67E5\u770B\u3002\
|
|
178
|
+
\u5404\u5305 API.md \u968F\u5B89\u88C5\u5305\u63D0\u4F9B\uFF0C\u53EF\u5728 node_modules/@epxing/<\u5305\u540D>/API.md \u67E5\u770B\u3002\u57FA\u7840\u7EC4\u4EF6\u7EDF\u4E00\u4F7F\u7528 @epxing/components\uFF0C\u65B0\u4EE3\u7801\u4F7F\u7528\u6839\u5BFC\u51FA\u53CA\u7A33\u5B9A\u5B50\u8DEF\u5F84\u3002
|
|
169
179
|
|
|
170
180
|
## \u72EC\u7ACB\u5E94\u7528\u4E0E\u8FDC\u7A0B\u4EA7\u54C1\u5E93
|
|
171
181
|
|
|
@@ -173,7 +183,8 @@ export default {
|
|
|
173
183
|
npm run build:app # dist/\uFF1A\u72EC\u7ACB\u5E94\u7528\uFF0C\u4F7F\u7528 npm \u5305
|
|
174
184
|
npx epxing lib # lib/\uFF1A\u9ED8\u8BA4\u6309\u9700\u4EA7\u54C1\u5E93
|
|
175
185
|
npx epxing lib --full # lib/\uFF1A\u5B8C\u6574\u4EA7\u54C1\u5E93
|
|
176
|
-
npm run build:lib # \
|
|
186
|
+
npm run build:lib # \u9ED8\u8BA4\u61D2\u52A0\u8F7D\uFF0C\u4E0A\u4F20\u6574\u4E2A lib/ \u76EE\u5F55
|
|
187
|
+
npm run build:lib --full # \u663E\u5F0F\u5168\u91CF\u6784\u5EFA\uFF0C\u4E5F\u53EF\u7528 build:lib:full
|
|
177
188
|
npm run build:lib:lazy # \u663E\u5F0F\u6309\u9700\u5E93\u6784\u5EFA
|
|
178
189
|
\`\`\`
|
|
179
190
|
|
|
@@ -186,13 +197,16 @@ vite.config.mjs \u53EA\u5728\u8FDC\u7A0B\u5E93\u6784\u5EFA\u542F\u7528 epxShared
|
|
|
186
197
|
## \u5B58\u91CF\u4EA7\u54C1\u5347\u7EA7
|
|
187
198
|
|
|
188
199
|
\`\`\`sh
|
|
189
|
-
epxing migrate .
|
|
190
|
-
epxing migrate . --
|
|
191
|
-
epxing migrate . --
|
|
200
|
+
epxing migrate .
|
|
201
|
+
epxing migrate . --apply
|
|
202
|
+
epxing migrate . --transform-vue --to-vite --apply
|
|
203
|
+
# \u56FA\u5B9A\u5230\u5F53\u524D\u7248\u672C\uFF1Aepxing migrate . --packages-version __PACKAGES_VERSION__
|
|
192
204
|
\`\`\`
|
|
193
205
|
|
|
194
206
|
\u9ED8\u8BA4\u53EA\u8BFB\u9884\u89C8\uFF1B--apply \u8981\u6C42 Git \u5DE5\u4F5C\u6811\u5E72\u51C0\u3002\u5347\u7EA7\u4FDD\u7559\u4E1A\u52A1\u7EC4\u4EF6\u3001\u8DEF\u7531\u3001store \u548C\u81EA\u5B9A\u4E49\u914D\u7F6E\uFF0C\u53EA\u81EA\u52A8\u6539\u5199\u786E\u5B9A\u7684\u5BFC\u5165\u53CA\u5165\u53E3\u3002\u52A8\u6001\u53D6\u503C\u3001\u672A\u77E5\u65E7\u63A5\u53E3\u3001\u672A\u652F\u6301\u7684\u6E90\u7801\u8DEF\u5F84\u8FDB\u5165 MIGRATION-REPORT.md \u4EBA\u5DE5\u6E05\u5355\uFF1B\u5B58\u5728\u65E0\u6CD5\u5B8C\u6574\u5207\u6362\u7684\u65E7\u5165\u53E3\u65F6\uFF0C\u4E0D\u6DF7\u88C5\u4E24\u5957\u8FD0\u884C\u65F6\uFF0C\u5148\u4FDD\u7559\u65E7\u6A21\u5F0F\u5E76\u5B8C\u6210\u6E05\u5355\u518D\u5347\u7EA7\u3002
|
|
195
207
|
|
|
208
|
+
\u65E7 CLI \u751F\u6210\u7684\u8BA1\u6570\u6B22\u8FCE\u9875\uFF0C\u4EC5\u5728 src/main.js \u4E0E src/App.vue \u5747\u4FDD\u6301\u539F\u6837\u65F6\u81EA\u52A8\u4FEE\u590D\u4E3A\u5E73\u53F0\u8DEF\u7531\u5165\u53E3\u3002\u81EA\u5B9A\u4E49\u5165\u53E3\u4E0D\u8986\u76D6\uFF0C\u53EF\u6309\u4E0A\u9762\u7684\u5E94\u7528\u5165\u53E3\u793A\u4F8B\u624B\u52A8\u8C03\u6574\uFF1B\u65E7 App.vue \u4FDD\u7559\u4F46\u4E0D\u518D\u4F5C\u4E3A\u542F\u52A8\u5165\u53E3\u3002
|
|
209
|
+
|
|
196
210
|
Vue 2 \u8BED\u6CD5\u8F6C\u6362\u3001\u7B2C\u4E09\u65B9\u7EC4\u4EF6\u66FF\u6362\u3001\u65E5\u671F\u53C2\u6570\u3001\u4E3B\u9898\u548C\u6837\u5F0F\u9694\u79BB\u9700\u7ED3\u5408\u62A5\u544A\u590D\u6838\u3002\u6784\u5EFA\u901A\u8FC7\u540E\u4ECD\u9700\u5728\u771F\u5B9E\u540E\u7AEF\u9A8C\u6536\u767B\u5F55\u3001\u6743\u9650\u3001\u5217\u8868\u3001\u8868\u5355\u3001\u5F39\u5C42\u53CA\u5173\u952E\u6D41\u7A0B\u3002
|
|
197
211
|
|
|
198
212
|
## \u66F4\u65B0\u7248\u672C
|
|
@@ -203,14 +217,15 @@ epxing --version
|
|
|
203
217
|
\`\`\`
|
|
204
218
|
|
|
205
219
|
\u6D4B\u8BD5\u7248\u4F7F\u7528 beta \u6807\u7B7E\uFF1B\u4EA7\u54C1\u5C06 @epxing \u5E73\u53F0\u5305\u56FA\u5B9A\u5728\u540C\u4E00\u5DF2\u9A8C\u8BC1\u7248\u672C\u3002CLI \u66F4\u65B0\u4E0D\u4F1A\u81EA\u52A8\u6539\u4EA7\u54C1\u4F9D\u8D56\uFF0C\u6309 migrate \u9884\u89C8\u3001\u5BA1\u9605\u3001\u5E94\u7528\u3001\u5B89\u88C5\u3001\u6784\u5EFA\u548C\u9A8C\u6536\u7684\u987A\u5E8F\u66F4\u65B0\u3002
|
|
206
|
-
`;var
|
|
220
|
+
`;var f=m.resolve(m.dirname(S(import.meta.url)),"../.."),s={"build-lib.mjs":_};s["package.json"]=`{
|
|
207
221
|
"name": "__NAME__",
|
|
208
222
|
"version": "0.1.0",
|
|
209
223
|
"runtime": "vue3",
|
|
210
224
|
"private": true,
|
|
211
225
|
"scripts": {
|
|
212
226
|
"dev": "vite",
|
|
213
|
-
"build:lib": "
|
|
227
|
+
"build:lib": "node build-lib.mjs",
|
|
228
|
+
"build:lib:full": "node build-lib.mjs --full",
|
|
214
229
|
"build:lib:lazy": "cross-env LAZY_LIB=true vite build"
|
|
215
230
|
},
|
|
216
231
|
"dependencies": {
|
|
@@ -225,7 +240,7 @@ epxing --version
|
|
|
225
240
|
"cross-env": "^7.0.3"
|
|
226
241
|
}
|
|
227
242
|
}
|
|
228
|
-
`;
|
|
243
|
+
`;s["vite.config.mjs"]=`// \u4EA7\u54C1\u9879\u76EE Vite \u5355\u914D\u7F6E\uFF1Adev \u58F3 + \u8FDC\u7A0B\u5E93 UMD \u6784\u5EFA \u4E8C\u5408\u4E00\uFF08\u5F62\u6001\u8BF4\u660E\u89C1 epx-frame \u7684 docs/PROJECT-GUIDE.md \xA7\u4E09\uFF09\u3002
|
|
229
244
|
// npm run dev \u2192 \u8D77\u5B8C\u6574\u5E73\u53F0\u8C03\u8BD5\u4F60\u7684\u7EC4\u4EF6\uFF08:8080\uFF09
|
|
230
245
|
// npm run build:lib \u2192 lib/index.js + index.css + index.deps.json\uFF08UMD\uFF0C\u5E73\u53F0 FM_SYSTEM_WEBPACK \u52A0\u8F7D\uFF09
|
|
231
246
|
// \u4E09\u4E2A\u6587\u4EF6\u540C\u76EE\u5F55\u4E00\u8D77\u90E8\u7F72\uFF1Bdeps.json \u4E0D\u7528\u5355\u72EC\u914D url\uFF08\u5E73\u53F0\u6309 js url \u63A8\u5BFC\uFF09
|
|
@@ -257,7 +272,7 @@ export default defineConfig(({ mode }) => {
|
|
|
257
272
|
// \u4EA7\u51FA <bundle>.deps.json\uFF1A\u5E73\u53F0\u52A0\u8F7D\u672C\u8FDC\u7A0B\u5E93\u524D\u636E\u6B64\u81EA\u52A8 ensure \u7528\u5230\u7684\u61D2\u52A0\u8F7D\u7EC4\u4EF6\uFF0C
|
|
258
273
|
// \u8FDC\u7A0B\u4FA7\u65E0\u9700\u624B\u5199 await window.frame.ensure()\u3002\u8BE6\u89C1 epx-frame \u7684 docs/WINDOW-FRAME-ABI.md\u3002
|
|
259
274
|
frameDeps(),
|
|
260
|
-
// \u6253\u5305\u5F62\u6001\uFF1A\u9ED8\u8BA4\
|
|
275
|
+
// \u6253\u5305\u5F62\u6001\uFF1A\u9ED8\u8BA4\u61D2\u52A0\u8F7D\uFF0Cnpm run build:lib --full \u663E\u5F0F\u5168\u91CF\u6784\u5EFA\u3002
|
|
261
276
|
// \u300C\u6E05\u5355 + \u7EC4\u4EF6\u6309\u9700\u52A0\u8F7D\u300D\u2014\u2014\u4EA7\u7269\u591A\u51FA chunks/ shims/ index.full.js index.manifest.json\uFF0C
|
|
262
277
|
// \u90E8\u7F72\u65F6\u5FC5\u987B\u4E0A\u4F20**\u6574\u4E2A lib/ \u76EE\u5F55**\uFF08\u4E0D\u518D\u662F index.js + index.css \u4E24\u4E2A\u6587\u4EF6\uFF09\u3002
|
|
263
278
|
lazyLib({ enabled: process.env.LAZY_LIB === 'true', glob: './__DIRNAME__/**/*.vue', pkgName: pkg.name }),
|
|
@@ -311,6 +326,7 @@ export default defineConfig(({ mode }) => {
|
|
|
311
326
|
}
|
|
312
327
|
},
|
|
313
328
|
build: {
|
|
329
|
+
copyPublicDir: false,
|
|
314
330
|
outDir: 'lib',
|
|
315
331
|
lib: {
|
|
316
332
|
entry: path.resolve(__dirname, 'src/index.js'),
|
|
@@ -332,7 +348,7 @@ export default defineConfig(({ mode }) => {
|
|
|
332
348
|
}
|
|
333
349
|
}
|
|
334
350
|
})
|
|
335
|
-
`;
|
|
351
|
+
`;s[".env.development"]=`# dev \u58F3\u7684\u5E73\u53F0\u8FD0\u884C\u65F6\u914D\u7F6E\uFF08npm run dev \u65F6\u7531 vite \u6CE8\u5165 window.*\uFF0C\u53D8\u91CF\u542B\u4E49\u540C\u5E73\u53F0 config.js\uFF09
|
|
336
352
|
# \u672C\u673A\u60F3\u8FDE\u522B\u7684\u540E\u7AEF\uFF1A\u4E0D\u8981\u6539\u8FD9\u4E2A\u6587\u4EF6\uFF0C\u65B0\u5EFA .env.development.local\uFF08\u4E0D\u8FDB git\uFF09\u8986\u76D6\u5BF9\u5E94\u884C\u5373\u53EF\uFF0C\u5982\uFF1A
|
|
337
353
|
# IP=https://test.epxing.com:88/
|
|
338
354
|
IP=https://dev.epxing.com:88/
|
|
@@ -342,7 +358,7 @@ BASE_CLIENT_ID=frame
|
|
|
342
358
|
BASE_SYSTEM_ID=epxing-frame-manage
|
|
343
359
|
BASE_APP_ID=FM_SERVICE_PLATFORM
|
|
344
360
|
WITH_CREDENTIALS=false
|
|
345
|
-
`;
|
|
361
|
+
`;s["src/index.js"]=`// \u8FDC\u7A0B\u5E93\u5165\u53E3\uFF1A\u81EA\u52A8\u6536\u96C6\u5168\u90E8\u4E1A\u52A1\u7EC4\u4EF6 + install \u6CE8\u518C\uFF08\u65B0\u589E\u7EC4\u4EF6\u96F6\u767B\u8BB0\uFF09
|
|
346
362
|
// \u672C\u9879\u76EE\u6E90\u7801\u91CC\u5199\u7684 ri- \u56FE\u6807\u89C4\u5219\uFF08\u7531 vite.config \u7684 epxIcons \u751F\u6210\uFF09\u3002
|
|
347
363
|
// \u4E0E UnoCSS \u7684 import 'uno.css' \u540C\u4E00\u7EA6\u5B9A\uFF1B\u4E00\u4E2A ri- \u90FD\u6CA1\u7528\u65F6\u5B83\u662F\u7A7A\u7684\uFF0C\u5F15\u5B83\u4E0D\u4EA7\u751F\u4F53\u79EF\u3002
|
|
348
364
|
import 'virtual:epx-icons.css'
|
|
@@ -382,7 +398,7 @@ const install = function (app, options) {
|
|
|
382
398
|
}
|
|
383
399
|
// runtime \u968F\u6784\u5EFA\u4EA7\u7269\u4EA4\u4ED8\uFF0C\u5E73\u53F0\u636E\u6B64\u6309\u5E93\u9009\u62E9\u539F\u751F\u5B89\u88C5\u6216\u65E7\u7248\u517C\u5BB9\u3002
|
|
384
400
|
export default { name, version, install, ...components, runtime: pkg.runtime }
|
|
385
|
-
`;
|
|
401
|
+
`;s["src/main.js"]=`// dev \u58F3\u5165\u53E3\uFF1A\u8D77\u5B8C\u6574\u5E73\u53F0\uFF08\u767B\u5F55/\u83DC\u5355/store/router \u5168\u6709\uFF09+ \u6302\u672C\u4EA7\u54C1\u7EC4\u4EF6\u3002
|
|
386
402
|
// \u6309\u9700\u5F15\u7528\uFF08epx-frame \u53EF\u63D2\u62D4\u5B50\u8DEF\u5F84\uFF0C\u8BE6\u89C1 frame \u4ED3\u5E93 PROJECT-GUIDE \xA7\u4E09\uFF09\uFF1A
|
|
387
403
|
// core = \u5185\u6838\uFF08createApp/store/router/\u5DE5\u5177\uFF09\uFF1Bcomponents = 113 \u4E2A\u901A\u7528\u7EC4\u4EF6\uFF1B
|
|
388
404
|
// business = \u5E73\u53F0\u7BA1\u7406\u9762/\u670D\u52A1\u5927\u5385\uFF08\u5E73\u53F0\u9875\u9762\u591A\u7531\u5B83\u62FC\u6210\uFF0C\u9ED8\u8BA4\u88C5\u4E0A\uFF09\u3002
|
|
@@ -407,7 +423,7 @@ app.use(business)
|
|
|
407
423
|
// app.use(designer); app.use(dashboard) // \u542F\u7528\u65F6\u628A\u4E0A\u9762\u5BF9\u5E94 import \u4E00\u8D77\u653E\u5F00\uFF0C\u5426\u5219 ReferenceError
|
|
408
424
|
app.use(product)
|
|
409
425
|
app.mount('#app')
|
|
410
|
-
`;
|
|
426
|
+
`;s["index.html"]=`<!DOCTYPE html>
|
|
411
427
|
<html lang="zh-CN">
|
|
412
428
|
<head>
|
|
413
429
|
<meta charset="utf-8">
|
|
@@ -420,7 +436,7 @@ app.mount('#app')
|
|
|
420
436
|
<script type="module" src="/src/main.js"></script>
|
|
421
437
|
</body>
|
|
422
438
|
</html>
|
|
423
|
-
`;
|
|
439
|
+
`;s["src/__DIRNAME__/DemoList.vue"]=`<script>
|
|
424
440
|
// \u793A\u4F8B\u7EC4\u4EF6\uFF1A\u7EE7\u627F\u5E73\u53F0 EntityList\uFF08\u4EA7\u54C1\u5F00\u53D1\u4E3B\u59FF\u52BF\u2014\u2014\u5148\u7EE7\u627F\u518D\u91CD\u5199\uFF0C\u89C1 PROJECT-GUIDE \xA7\u4E94\uFF09\u3002
|
|
425
441
|
// \u9875\u9762\u914D\u7F6E\u91CC\u7528 component: "epx-__NAME__-demo-list" \u5373\u53EF\u6E32\u67D3\u672C\u7EC4\u4EF6\u3002\u8DD1\u901A\u540E\u53EF\u5220\u3002
|
|
426
442
|
// \u6309\u9700\u5F15\u7528\u5F62\u6001\u4E0B\u4ECE\u5B50\u8DEF\u5F84\u5BFC\u5165\uFF08\u4E0E main.js \u4E00\u81F4\uFF0C\u522B\u6DF7\u7528\u805A\u5408\u5165\u53E3 'epx-frame'\uFF09\u3002
|
|
@@ -439,15 +455,15 @@ export default {
|
|
|
439
455
|
border-radius: var(--epx-radius-base, 4px);
|
|
440
456
|
}
|
|
441
457
|
</style>
|
|
442
|
-
`;
|
|
458
|
+
`;s[".gitignore"]=`node_modules/
|
|
443
459
|
lib/
|
|
444
460
|
dist/
|
|
445
461
|
*.tgz
|
|
446
462
|
.DS_Store
|
|
447
463
|
.env*.local
|
|
448
|
-
`;
|
|
449
|
-
`).pop();c="file:./"+u,console.log(" \u2713 "+u)}else c="^"+JSON.parse(l.readFileSync(m.join(
|
|
450
|
-
\u2713 \u9879\u76EE\u5DF2\u751F\u6210\uFF1A${e}`),
|
|
464
|
+
`;s["README.md"]='# __NAME__\n\nepx-frame \u4EA7\u54C1\u8FDC\u7A0B\u5E93\u9879\u76EE\uFF08Vite \u5F62\u6001\uFF09\u3002\u5F00\u53D1\u6307\u5357\u89C1 epx-frame \u4ED3\u5E93 `docs/PROJECT-GUIDE.md`\u3002\n\n```bash\nnpm i # \u88C5\u4F9D\u8D56\nnpm run dev # \u672C\u5730\u5F00\u53D1\uFF08:8080\uFF0C\u8D77\u5B8C\u6574\u5E73\u53F0\uFF0C\u7528\u5E73\u53F0\u8D26\u53F7\u767B\u5F55\uFF09\nnpm run build:lib # \u6784\u5EFA\u8FDC\u7A0B\u5E93 lib/index.js + index.css\n```\n\n\u90E8\u7F72\uFF1Alib \u4EA7\u7269\u53D1\u5230\u6587\u4EF6\u670D\u52A1\uFF0C\u5E73\u53F0 FM_SYSTEM_WEBPACK \u7ED9\u672C\u7CFB\u7EDF\u914D js/css \u4E24\u6761 url\u3002\n`lib/index.deps.json`\uFF08\u4F9D\u8D56\u6E05\u5355\uFF09**\u8981\u548C index.js \u540C\u76EE\u5F55\u540C\u540D\u4E00\u8D77\u4F20**\uFF0C\u4F46**\u4E0D\u7528**\u5355\u72EC\u914D url\u2014\u2014\n\u5E73\u53F0\u6309 js url \u63A8\u5BFC\u5B83\uFF0C\u52A0\u8F7D\u672C\u5E93\u524D\u5148\u5907\u597D\u7528\u5230\u7684\u61D2\u52A0\u8F7D\u5E73\u53F0\u7EC4\u4EF6\uFF1B\u6F0F\u4F20\u53EA\u4F1A\u9759\u9ED8\u9000\u5316\u4E3A\u300C\u5907\u5168\u90E8\u300D\uFF08\u591A\u4E0B\u70B9 chunk\uFF09\u3002\n\u7EC4\u4EF6\u547D\u540D\uFF1A`epx-__NAME__-<\u57DF>-<\u540D>`\uFF08\u5168\u5E73\u53F0\u552F\u4E00\uFF09\uFF1B\u65B0\u589E .vue \u5373\u81EA\u52A8\u6CE8\u518C\u3002\n\n\u6846\u67B6\u5F15\u7528\u662F**\u6309\u9700\u5B50\u8DEF\u5F84**\u5F62\u6001\uFF08`epx-frame/core` + `epx-frame/components`\uFF0C\u89C1 src/main.js \u6CE8\u91CA\uFF09\uFF1A\nbusiness/designer/dashboard \u4E0D\u88C5\u4E5F\u4F1A\u5728\u8FD0\u884C\u65F6\u6309\u9700\u61D2\u52A0\u8F7D\uFF1B\u7EC4\u4EF6\u6E90\u7801\u91CC\u4E5F\u4ECE `epx-frame/components`\n\u5BFC\u5165\u7EE7\u627F\uFF08\u522B\u548C\u805A\u5408\u5165\u53E3 `epx-frame` \u6DF7\u7528\u2014\u2014\u4F1A\u51FA\u73B0\u4E24\u5957\u8FD0\u884C\u65F6\uFF09\u3002\n\n## \u56FE\u6807\n\n**461 \u4E2A\u5E73\u53F0\u56FE\u6807\u76F4\u63A5\u5199\u5C31\u884C\uFF0C\u96F6\u914D\u7F6E**\u2014\u2014\u5B83\u4EEC\u968F epx-frame \u53D1\u5E03\uFF0C\u62FF\u5230\u5373\u7528\uFF1A\n\n```vue\n<i class="el-icon-search"></i>\n<i class="epx-icon-shezhi"></i>\n```\n\n`font-size` \u63A7\u5236\u5927\u5C0F\u3001`color` \u63A7\u5236\u989C\u8272\uFF08\u5E95\u5C42\u662F CSS mask + currentColor\uFF09\u3002\n\n\u60F3\u7528\u5E73\u53F0\u6CA1\u6709\u7684\u56FE\u6807\uFF0C\u76F4\u63A5\u5199 [Remix Icon](https://remixicon.com) \u7684\u540D\u5B57\uFF1A\n\n```vue\n<i class="ri-rocket-line"></i>\n```\n\n**\u8981\u5148 `npm i -D @iconify-json/ri`**\uFF083229 \u4E2A\u56FE\u6807\u7684\u6570\u636E\u6E90\uFF0C\u53EA\u5728\u6784\u5EFA\u671F\u8BFB\u4E00\u6B21\uFF0C\u4E0D\u8FDB\u4EA7\u7269\uFF09\u3002\n`vite.config.mjs` \u91CC\u7684 `epxIcons()` \u4F1A\u626B\u6E90\u7801\u3001\u53EA\u4E3A**\u4F60\u5B9E\u9645\u7528\u5230\u7684**\u90A3\u51E0\u4E2A\u751F\u6210\u89C4\u5219\u2014\u2014\n\u5199 5 \u4E2A\u5C31\u662F 5 \u4E2A\u7684\u4F53\u79EF\uFF0C\u4E0D\u4F1A\u628A 3229 \u4E2A\u90FD\u6253\u8FDB\u53BB\u3002\u540D\u5B57\u62FC\u9519\u4E86\u4F1A\u5728\u6784\u5EFA\u65F6\u62A5\u51FA\u6765\uFF0C\u4E0D\u4F1A\u9759\u9ED8\u53D8\u7A7A\u767D\u3002\n\n\u56FE\u6807\u540D\u5B58\u5728**\u6570\u636E\u5E93**\u91CC\uFF08\u83DC\u5355\u56FE\u6807\u3001\u6309\u94AE iconCls\u3001\u9875\u9762\u914D\u7F6E\uFF09\u7684\u90A3\u4E9B\uFF0C\u6784\u5EFA\u671F\u626B\u4E0D\u5230\u2014\u2014\n\u4F46\u5E73\u53F0\u8FD0\u884C\u65F6\u4F1A\u6309\u9700\u8865\u9F50\uFF0C\u4F60\u4E0D\u7528\u505A\u4EFB\u4F55\u4E8B\u3002\u5B8C\u6574\u8BF4\u660E\u89C1 epx-frame \u4ED3\u5E93 `docs/guide/tools/icon.md`\u3002\n\n\u540E\u7AEF\u5730\u5740\u7B49\u73AF\u5883\u914D\u7F6E\u5728 `.env.development`\uFF1B\u672C\u673A\u60F3\u8FDE\u522B\u7684\u540E\u7AEF\uFF0C\u65B0\u5EFA `.env.development.local`\n\uFF08\u4E0D\u8FDB git\uFF09\u8986\u76D6\u5BF9\u5E94\u884C\uFF08\u5982 `IP=https://test.epxing.com:88/`\uFF09\uFF0C\u91CD\u542F dev \u751F\u6548\u3002\n\n\u521B\u5EFA\u547D\u4EE4\u5DF2\u5728 package.json \u5199\u5165 `runtime: "vue3"`\uFF0C\u5E76\u7531 src/index.js \u9ED8\u8BA4\u5BFC\u51FA\u540C\u540D\u6807\u8BC6\u3002\n\u6784\u5EFA\u90E8\u7F72\u540E\u5E73\u53F0\u6309\u5305\u9009\u62E9\u5B89\u88C5\u65B9\u5F0F\uFF1A`vue3` \u8D70\u539F\u751F\u5B89\u88C5\uFF0C`vue2` \u6216\u672A\u6807\u8BC6\u7684\u5176\u5B83\u5E93\u7EE7\u7EED\u4F7F\u7528\u517C\u5BB9\u6865\u3002\n';function w({name:i,dir:n,epxFrameSpec:o,packagesVersion:t,cliVersion:p="0.5.0-beta.5"}){let a=i.toLowerCase(),r=i;if(!/^[a-z][a-z0-9-]*$/i.test(i))throw new Error(`\u4EA7\u54C1\u540D\u300C${i}\u300D\u9700\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4EC5\u542B\u5B57\u6BCD/\u6570\u5B57/-`);let e=m.resolve(n);if(t&&o)throw new Error("--packages-version \u4E0E --epx-frame \u4E0D\u80FD\u540C\u65F6\u6307\u5B9A");if(t&&!/^(?:[~^]?\d+\.\d+\.\d+(?:-[\w.-]+)?|[a-z][\w.-]*)$/.test(t))throw new Error("--packages-version \u9700\u8981 npm \u7248\u672C\u3001\u7248\u672C\u8303\u56F4\u6216\u6807\u7B7E");if(l.existsSync(e)&&l.readdirSync(e).length)throw new Error(`\u76EE\u6807\u76EE\u5F55\u975E\u7A7A\uFF1A${e}`);let c=o;if(l.mkdirSync(e,{recursive:!0}),!c&&!t)if(l.existsSync(m.join(f,"vite.config.mjs"))){if(!l.existsSync(m.join(f,"lib/epx-frame.common.js")))throw new Error("frame \u4ED3\u5E93 lib/ \u672A\u6784\u5EFA\u2014\u2014\u5148\u5728 frame-vue3 \u8DD1 pnpm build:component\uFF0C\u6216\u7528 --epx-frame \u6307\u5B9A\u6765\u6E90");console.log(" \u6253\u5305 epx-frame tarball\uFF08npm pack\uFF09\u2026");let u=b("npm pack --pack-destination "+JSON.stringify(e),{cwd:f,encoding:"utf8"}).trim().split(`
|
|
465
|
+
`).pop();c="file:./"+u,console.log(" \u2713 "+u)}else c="^"+JSON.parse(l.readFileSync(m.join(f,"package.json"),"utf8")).version,console.log(` epx-frame \u4F9D\u8D56 \u2192 ${c}\uFF08\u5168\u5C40\u5B89\u88C5\u6A21\u5F0F\uFF1Bnpm i \u65F6\u9700 --registry \u516C\u53F8\u6E90\uFF09`);let E=t?v(s,t):s;for(let[x,u]of Object.entries(E)){let g=m.join(e,x.replace("__DIRNAME__",r));l.mkdirSync(m.dirname(g),{recursive:!0}),l.writeFileSync(g,u.replaceAll("__NAME__",a).replaceAll("__DIRNAME__",r).replaceAll("__EPX_FRAME__",c||"").replaceAll("__PACKAGES_VERSION__",t||"").replaceAll("__CLI_VERSION__",p))}return b('git init -q && git add -A && git commit -qm "epx-create: \u9879\u76EE\u521D\u59CB\u5316\uFF08Vite \u5F62\u6001\u811A\u624B\u67B6\uFF09"',{cwd:e}),console.log(`
|
|
466
|
+
\u2713 \u9879\u76EE\u5DF2\u751F\u6210\uFF1A${e}`),t?(console.log(` npm install --prefix "${e}" --registry https://registry.npmjs.org/
|
|
451
467
|
cd "${e}"
|
|
452
468
|
npm run dev # :8080
|
|
453
469
|
npx epxing lib
|
|
@@ -456,4 +472,4 @@ dist/
|
|
|
456
472
|
npm i
|
|
457
473
|
npm run dev # :8080\uFF0C\u8D77\u5B8C\u6574\u5E73\u53F0\uFF08\u7528\u5E73\u53F0\u8D26\u53F7\u767B\u5F55\u540E\u5F00\u53D1\u8C03\u8BD5\uFF09
|
|
458
474
|
npm run build:lib # \u51FA lib/index.js + index.css + index.deps.json\uFF08\u4E09\u4E2A\u540C\u76EE\u5F55\u4E00\u8D77\u4F20\uFF09\u2192 \u90E8\u7F72 FM_SYSTEM_WEBPACK
|
|
459
|
-
\u7EC4\u4EF6\u5199\u5728 src/${
|
|
475
|
+
\u7EC4\u4EF6\u5199\u5728 src/${r}/\uFF08\u793A\u4F8B DemoList.vue \u8DD1\u901A\u540E\u53EF\u5220\uFF09\uFF1B\u6307\u5357\uFF1Aframe \u4ED3\u5E93 docs/PROJECT-GUIDE.md`),e)}d(w,"scaffold");var R=process.argv[1]&&import.meta.url===j(process.argv[1]).href;if(R){let i=process.argv.slice(2),n=d(r=>{let e=i.indexOf(r);if(e===-1)return null;let c=i[e+1];return i.splice(e,2),c},"take"),o=n("--dir"),t=n("--epx-frame"),p=n("--packages-version"),a=i.find(r=>!r.startsWith("-"));a||(console.error("\u7528\u6CD5\uFF1Anode tools/epx-create/scaffold.mjs <\u4EA7\u54C1\u540D> [--dir <\u76EE\u5F55>] [--epx-frame <spec>]"),process.exit(1));try{w({name:a,dir:o||m.resolve(f,"..","product",a),epxFrameSpec:t,packagesVersion:p})}catch(r){console.error("\u2717 "+r.message),process.exit(1)}}export{s as TEMPLATES,w as scaffold};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as
|
|
2
|
+
import{d as h}from"../chunks/VASFHXYG.mjs";import{a as g}from"../chunks/7YE2UHC6.mjs";import{b as x}from"../chunks/U27ZPQAM.mjs";import"../chunks/7NAADJFP.mjs";import{a as l}from"../chunks/J7B2EWKH.mjs";import r from"node:fs";import c from"node:path";var i=process.argv.slice(2).find(e=>!e.startsWith("--"));(!i||!r.existsSync(i))&&(console.error("\u7528\u6CD5\uFF1Anode tools/epx-migrate/detect-vue3-risks.mjs <\u9879\u76EE\u76EE\u5F55>"),process.exit(1));var p=[],y=l(e=>{for(let s of r.readdirSync(e,{withFileTypes:!0})){let n=c.join(e,s.name);s.isDirectory()&&!/node_modules|\.git|^lib$|^dist$/.test(s.name)?y(n):/\.(?:vue|[cm]?js|jsx|ts|tsx)$/.test(s.name)&&p.push(n)}},"walk"),f=c.join(i,"src");r.existsSync(f)&&y(f);var o=[],a=l(e=>r.existsSync(c.join(i,e))?r.readFileSync(c.join(i,e),"utf8"):"","readIf"),$=a("package.json");$&&h(a("src/main.js"),a("src/App.vue"),JSON.parse($).name)&&o.push({file:"src/main.js",rule:"R4-platform-entry",detail:"\u65E7 CLI \u8BA1\u6570\u6B22\u8FCE\u9875\u5C1A\u672A\u63A5\u5165\u5E73\u53F0\u7CFB\u7EDF\uFF1B\u4F7F\u7528\u65B0\u7248 epxing upgrade . \u9884\u89C8\uFF0C\u518D\u52A0 --apply \u4FEE\u590D\u539F\u59CB\u5165\u53E3\u3002\u81EA\u5B9A\u4E49\u5165\u53E3\u4FDD\u7559\uFF0C\u6309\u4EA7\u54C1\u7528\u9014\u6838\u5BF9\u5E73\u53F0\u8DEF\u7531\u548C\u63D2\u4EF6\u3002"});for(let e of p){let s=r.readFileSync(e,"utf8"),n=c.relative(i,e),m=g(s,{filename:e});for(let t of m.fixes)o.push({file:`${n}:${t.line}`,rule:"R2-date-format",detail:`${t.before} \u2192 ${t.after}\uFF1B\u6267\u884C\u65E5\u671F\u683C\u5F0F\u4FEE\u590D\u5668 --apply\uFF1B\u539F\u751FVue3\u5305\u4E0D\u8D70\u65E7render\u57AB\u7247\uFF08F21\uFF09`});for(let t of m.warnings)o.push({file:n,rule:"R2-date-format\u5F85\u8FFD\u8E2A",detail:t});let S=/<template[>\s]/.test(s),d=/\bextends:\s*(\w+)/.exec(s),u=(/<style[^>]*\bscoped\b[^>]*>([\s\S]*?)<\/style>/.exec(s)||[])[1]||"";if(u&&d&&!S){let t=u.match(/^[ \t]*\.[\w-][^{}\n]*\{/gm)||[];t.length&&o.push({file:n,rule:"R1-scoped\u5F85\u590D\u6838",detail:`extends ${d[1]} + <style scoped> + \u65E0 <template>\uFF0C\u4E14 scoped \u5757\u542B ${t.length} \u4E2A\u88F8\u7C7B\u9009\u62E9\u5668\uFF08\u5982 ${t[0].trim()}\uFF09\u3002\u4EC5\u63D0\u793A\u5F85\u590D\u6838\uFF0C\u4E0D\u8BC1\u660E\u6837\u5F0F\u5931\u6548\uFF1B\u5148\u4FDD\u7559 scoped\uFF0C\u7528\u6700\u7EC8\u4EA7\u7269\u9A8C\u8BC1 DOM \u4E0E CSS \u5339\u914D\u3002\u82E5\u786E\u9700\u53BB scoped\uFF0C\u987B\u540C\u65F6\u5B8C\u6210\u552F\u4E00\u547D\u540D\u7A7A\u95F4\u9694\u79BB\uFF0C\u5E76\u590D\u6D4B\u7EC4\u4EF6\u5916\u540C\u540D\u5143\u7D20\u548C\u5176\u4ED6\u9875\u9762\uFF1B\u4E0D\u8981\u4E3A\u6D88\u9664\u544A\u8B66\u6279\u91CF\u6539\u6837\u5F0F`})}}if(r.existsSync(f))for(let e of x(i)){for(let s of e.fixes)o.push({file:`${e.file}:${s.line}`,rule:"R3-theme",detail:`${s.before} \u2192 ${s.after}\uFF1B\u6267\u884C epxing theme <\u76EE\u5F55> --apply\uFF0C\u6216\u5728\u8FC1\u79FB\u65F6\u81EA\u52A8\u9002\u914D\uFF08E2\uFF09`});for(let s of e.warnings)o.push({file:e.file,rule:"R3-theme\u5F85\u590D\u6838",detail:s})}console.log(`[detect-vue3-risks] \u626B\u63CF ${p.length} \u4E2A\u7EC4\u4EF6/\u811A\u672C\u6587\u4EF6\u53CA src \u6837\u5F0F\u6587\u4EF6`);o.length===0&&(console.log(" \u2713 \u672A\u53D1\u73B0\u5DF2\u77E5\u9759\u6001\u98CE\u9669\u6A21\u5F0F"),process.exit(0));console.log(` \u26A0 \u53D1\u73B0 ${o.length} \u5904\u5F85\u590D\u6838\u98CE\u9669\u6A21\u5F0F\uFF08\u9759\u6001\u547D\u4E2D\u4E0D\u4EE3\u8868\u8FD0\u884C\u65F6\u5DF2\u5931\u6548\uFF09\uFF1A`);for(let e of o)console.log(` [${e.rule}] ${e.file}
|
|
3
3
|
${e.detail}`);process.exit(2);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{b as t}from"../chunks/
|
|
2
|
+
import{b as t}from"../chunks/7YE2UHC6.mjs";import"../chunks/7NAADJFP.mjs";import"../chunks/J7B2EWKH.mjs";import l from"node:fs";import i from"node:path";var c=process.argv.slice(2),n=c.find(s=>!s.startsWith("--"));if(!n||!l.existsSync(i.join(n,"src")))console.error("\u7528\u6CD5\uFF1Anode tools/epx-migrate/fix-date-formats.mjs <\u4EA7\u54C1\u6216\u9879\u76EE\u76EE\u5F55> [--apply]"),process.exitCode=1;else{let s=c.includes("--apply"),r=t(i.resolve(n),{apply:s});console.log(`[\u65E5\u671F\u683C\u5F0F ${s?"apply":"dry-run"}] ${r.reduce((o,e)=>o+e.count,0)} \u5904\u81EA\u52A8\u4FEE\u590D\uFF1B${r.reduce((o,e)=>o+e.warnings.length,0)} \u9879\u52A8\u6001/\u89E3\u6790\u590D\u6838`);for(let o of r){console.log(o.file);for(let e of o.fixes)console.log(` L${e.line}: ${e.before} \u2192 ${e.after}`);for(let e of o.warnings)console.log(" \u5F85\u8FFD\u8E2A\uFF1A"+e)}r.some(o=>o.warnings.length)&&(process.exitCode=2)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{b as l}from"../chunks/
|
|
2
|
+
import{b as l}from"../chunks/U27ZPQAM.mjs";import"../chunks/7NAADJFP.mjs";import"../chunks/J7B2EWKH.mjs";import i from"node:fs";import t from"node:path";var c=process.argv.slice(2),n=c.find(s=>!s.startsWith("--"));if(!n||!i.existsSync(t.join(n,"src")))console.error("\u7528\u6CD5\uFF1Aepxing theme <\u4EA7\u54C1\u6216\u9879\u76EE\u76EE\u5F55> [--apply]"),process.exitCode=1;else{let s=c.includes("--apply"),r=l(t.resolve(n),{apply:s});console.log(`[\u4E3B\u9898\u9002\u914D ${s?"apply":"dry-run"}] ${r.reduce((o,e)=>o+e.count,0)} \u5904\u81EA\u52A8\u4FEE\u590D\uFF1B${r.reduce((o,e)=>o+e.warnings.length,0)} \u9879\u5F85\u590D\u6838`);for(let o of r){console.log(o.file);for(let e of o.fixes)console.log(` L${e.line}: ${e.before} \u2192 ${e.after}`);for(let e of o.warnings)console.log(" \u5F85\u590D\u6838\uFF1A"+e)}console.log("\u4FDD\u7559 scoped\uFF1B\u4E0D\u6CE8\u5165\u5168\u5C40\u4E3B\u9898\u3002\u53D1\u5E03\u524D\u7528\u6700\u7EC8\u4EA7\u7269\u5207\u6362\u5E73\u53F0\u5B57\u53F7\u3001\u5706\u89D2\u3001\u660E\u6697\u4E3B\u9898\uFF0C\u5E76\u68C0\u67E5\u7EC4\u4EF6\u5916\u5143\u7D20\u3002"),r.some(o=>o.warnings.length)&&(process.exitCode=2)}
|