zmp-cli 3.15.6 → 3.15.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/build/index.js +1 -184
- package/config/index.js +1 -44
- package/create/index.js +1 -230
- package/create/utils/generate-app-config.js +1 -34
- package/create/utils/generate-npm-scripts.js +1 -26
- package/create/utils/get-options.js +1 -204
- package/create/utils/npm-scripts.js +1 -62
- package/deploy/index.js +1 -149
- package/deploy/utils/get-options.js +1 -69
- package/deploy/utils/request-upload.js +1 -34
- package/deploy/utils/upload-app.js +1 -82
- package/index.js +1 -319
- package/login/index.js +1 -169
- package/login/utils/get-options.js +1 -58
- package/login/utils/zalo-login.js +1 -32
- package/migrate/icons/update-icon-v3.js +1 -19
- package/migrate/index.js +1 -60
- package/migrate/utils/get-options.js +1 -46
- package/migrate/utils/migrate-react.js +1 -33
- package/package.json +13 -40
- package/start/frame/index.html +264 -254
- package/start/index.js +1 -382
- package/sync/index-to-app-config.js +1 -146
- package/sync/index.js +1 -55
- package/utils/axios.js +1 -15
- package/utils/check-update.js +1 -53
- package/utils/constants.js +1 -20
- package/utils/env.js +1 -39
- package/utils/error.js +1 -16
- package/utils/find-files-by-ext.js +1 -27
- package/utils/find-free-port.js +1 -11
- package/utils/fs-extra.js +1 -90
- package/utils/generate-pages-map.js +1 -17
- package/utils/get-app-info.js +1 -22
- package/utils/get-current-project.js +1 -25
- package/utils/get-ip.js +1 -19
- package/utils/log.js +1 -19
- package/utils/node-blob.js +1 -106
- package/utils/resumable.d.js +1 -0
- package/utils/resumable.js +1 -1204
- package/utils/spinner.js +1 -25
- package/utils/tunnel.js +1 -36
- package/.editorconfig +0 -15
- package/.eslintignore +0 -8
- package/.eslintrc.js +0 -10
- package/.vscode/launch.json +0 -23
- package/LICENSE +0 -21
- package/README.git.md +0 -37
- package/assets/index.js +0 -147
- package/build/dist/index.dev.js +0 -217
- package/config/dist/index.dev.js +0 -48
- package/create/init-zmp-ui.js +0 -216
- package/create/templates/app-parameters.js +0 -33
- package/create/templates/common/css/icons.css +0 -60
- package/create/templates/common/icons/512x512.png +0 -0
- package/create/templates/common/icons/apple-touch-icon.png +0 -0
- package/create/templates/common/icons/favicon.png +0 -0
- package/create/templates/common/postcss.config.js +0 -5
- package/create/templates/common/splash-2732x2732.png +0 -0
- package/create/templates/common/tailwind/postcss.config.js +0 -5
- package/create/templates/common/tailwind/tailwind.config.js +0 -9
- package/create/templates/common/tailwind/tailwind.css +0 -3
- package/create/templates/common/webpack/build.js +0 -41
- package/create/templates/copy-assets.js +0 -158
- package/create/templates/core/babel.config.js +0 -11
- package/create/templates/core/copy-assets.js +0 -83
- package/create/templates/core/generate-home-page.js +0 -143
- package/create/templates/core/generate-root.js +0 -283
- package/create/templates/core/generate-routes.js +0 -155
- package/create/templates/core/generate-scripts.js +0 -94
- package/create/templates/core/pages/404.html +0 -20
- package/create/templates/core/pages/about.html +0 -26
- package/create/templates/core/pages/catalog.html +0 -40
- package/create/templates/core/pages/dynamic-route.html +0 -115
- package/create/templates/core/pages/form.html +0 -258
- package/create/templates/core/pages/left-page-1.html +0 -24
- package/create/templates/core/pages/left-page-2.html +0 -23
- package/create/templates/core/pages/product.html +0 -36
- package/create/templates/core/pages/request-and-load.html +0 -35
- package/create/templates/core/pages/settings.html +0 -252
- package/create/templates/create-folders.js +0 -30
- package/create/templates/dist/generate-styles.dev.js +0 -46
- package/create/templates/generate-config-xml.js +0 -18
- package/create/templates/generate-index.js +0 -49
- package/create/templates/generate-manifest.js +0 -49
- package/create/templates/generate-recoil.js +0 -56
- package/create/templates/generate-routes.js +0 -16
- package/create/templates/generate-scripts.js +0 -16
- package/create/templates/generate-service-worker.js +0 -126
- package/create/templates/generate-store.js +0 -88
- package/create/templates/generate-styles.js +0 -110
- package/create/templates/generate-webpack-config.js +0 -335
- package/create/templates/generate-zmp-custom.js +0 -81
- package/create/templates/react/babel.config.js +0 -12
- package/create/templates/react/components/app-items.jsx +0 -44
- package/create/templates/react/components/navbar-back.jsx +0 -25
- package/create/templates/react/components/user-card.jsx +0 -18
- package/create/templates/react/copy-assets.js +0 -85
- package/create/templates/react/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react/generate-home-page.js +0 -111
- package/create/templates/react/generate-root.js +0 -84
- package/create/templates/react/generate-routes.js +0 -16
- package/create/templates/react/generate-scripts.js +0 -68
- package/create/templates/react/pages/404.js +0 -27
- package/create/templates/react/pages/about.js +0 -52
- package/create/templates/react/pages/catalog.js +0 -112
- package/create/templates/react/pages/dynamic-route.js +0 -80
- package/create/templates/react/pages/form.js +0 -152
- package/create/templates/react/pages/index copy.js +0 -17
- package/create/templates/react/pages/index.js +0 -17
- package/create/templates/react/pages/settings.js +0 -76
- package/create/templates/react/pages/user.js +0 -56
- package/create/templates/react/vite.config.js +0 -11
- package/create/templates/react-typescript/_tsconfig.json +0 -33
- package/create/templates/react-typescript/components/app-items.js +0 -53
- package/create/templates/react-typescript/components/index.js +0 -9
- package/create/templates/react-typescript/components/navbar-back.js +0 -40
- package/create/templates/react-typescript/components/user-card.js +0 -32
- package/create/templates/react-typescript/copy-assets.js +0 -94
- package/create/templates/react-typescript/dist/generate-scripts.dev.js +0 -23
- package/create/templates/react-typescript/generate-home-page.js +0 -113
- package/create/templates/react-typescript/generate-root.js +0 -81
- package/create/templates/react-typescript/generate-routes.js +0 -12
- package/create/templates/react-typescript/generate-scripts.js +0 -67
- package/create/templates/react-typescript/pages/404.js +0 -27
- package/create/templates/react-typescript/pages/about.js +0 -52
- package/create/templates/react-typescript/pages/catalog.js +0 -112
- package/create/templates/react-typescript/pages/dynamic-route.js +0 -80
- package/create/templates/react-typescript/pages/form.js +0 -152
- package/create/templates/react-typescript/pages/index.js +0 -17
- package/create/templates/react-typescript/pages/settings.js +0 -76
- package/create/templates/react-typescript/pages/user.js +0 -56
- package/create/templates/react-typescript/vite.config.js +0 -21
- package/create/templates/svelte/babel.config.js +0 -10
- package/create/templates/svelte/copy-assets.js +0 -47
- package/create/templates/svelte/generate-home-page.js +0 -158
- package/create/templates/svelte/generate-root.js +0 -235
- package/create/templates/svelte/generate-routes.js +0 -91
- package/create/templates/svelte/generate-scripts.js +0 -47
- package/create/templates/svelte/pages/404.svelte +0 -10
- package/create/templates/svelte/pages/about.svelte +0 -16
- package/create/templates/svelte/pages/catalog.svelte +0 -31
- package/create/templates/svelte/pages/dynamic-route.svelte +0 -34
- package/create/templates/svelte/pages/form.svelte +0 -175
- package/create/templates/svelte/pages/left-page-1.svelte +0 -13
- package/create/templates/svelte/pages/left-page-2.svelte +0 -12
- package/create/templates/svelte/pages/product.svelte +0 -21
- package/create/templates/svelte/pages/request-and-load.svelte +0 -21
- package/create/templates/svelte/pages/settings.svelte +0 -175
- package/create/templates/vue/babel.config.js +0 -10
- package/create/templates/vue/components/header.vue +0 -28
- package/create/templates/vue/components/sun-and-moon.vue +0 -34
- package/create/templates/vue/copy-assets.js +0 -67
- package/create/templates/vue/generate-home-page.js +0 -56
- package/create/templates/vue/generate-root.js +0 -50
- package/create/templates/vue/generate-routes.js +0 -7
- package/create/templates/vue/generate-scripts.js +0 -63
- package/create/templates/vue/global-components.d.ts +0 -121
- package/create/templates/vue/icons/moon.svg +0 -3
- package/create/templates/vue/icons/sun.svg +0 -3
- package/create/templates/vue/pages/404.vue +0 -12
- package/create/templates/vue/pages/about.vue +0 -15
- package/create/templates/vue/pages/catalog.vue +0 -39
- package/create/templates/vue/pages/dynamic-route.vue +0 -34
- package/create/templates/vue/pages/form.vue +0 -162
- package/create/templates/vue/pages/left-page-1.vue +0 -14
- package/create/templates/vue/pages/left-page-2.vue +0 -11
- package/create/templates/vue/pages/product.vue +0 -31
- package/create/templates/vue/pages/request-and-load.vue +0 -25
- package/create/templates/vue/pages/settings.vue +0 -18
- package/create/templates/vue/vite.config.js +0 -11
- package/create/templates/zaui/_tsconfig.json +0 -33
- package/create/templates/zaui/babel.config.js +0 -12
- package/create/templates/zaui/components/user-card.jsx +0 -16
- package/create/templates/zaui/copy-assets.js +0 -90
- package/create/templates/zaui/generate-home-page.js +0 -117
- package/create/templates/zaui/generate-root.js +0 -53
- package/create/templates/zaui/generate-routes.js +0 -10
- package/create/templates/zaui/generate-scripts.js +0 -39
- package/create/templates/zaui/generate-user-card.js +0 -55
- package/create/templates/zaui/pages/about.js +0 -129
- package/create/templates/zaui/pages/form.js +0 -123
- package/create/templates/zaui/pages/index.js +0 -9
- package/create/templates/zaui/pages/user.js +0 -109
- package/create/templates/zaui/vite.config.js +0 -11
- package/create/utils/colors.js +0 -94
- package/create/utils/dist/get-options.dev.js +0 -277
- package/create/utils/generate-gitignore.js +0 -43
- package/create/utils/generate-package-json.js +0 -132
- package/create/utils/generate-readme.js +0 -28
- package/create/utils/indent.js +0 -31
- package/create/utils/string.js +0 -13
- package/create/utils/styles-extension.js +0 -9
- package/create/utils/template-if.js +0 -9
- package/deploy/dist/index.dev.js +0 -227
- package/deploy/utils/dist/request-upload.dev.js +0 -62
- package/deploy/utils/dist/upload-app.dev.js +0 -113
- package/dist/bundle.js +0 -1
- package/dist/index.dev.js +0 -352
- package/jsconfig.json +0 -8
- package/login/dist/index.dev.js +0 -223
- package/login/utils/dist/zalo-login.dev.js +0 -41
- package/screenshots/wellcome.jpg +0 -0
- package/show-qr-app/assets/css/style.css +0 -87
- package/show-qr-app/assets/js/qrcode.min.js +0 -1
- package/show-qr-app/index.html +0 -57
- package/show-qr-app/package.json +0 -14
- package/start/dist/index.dev.js +0 -312
- package/start/generate-hr-config.js +0 -59
- package/ui/server.js +0 -194
- package/ui/www/css/app.css +0 -1
- package/ui/www/css/app.css.map +0 -1
- package/ui/www/fonts/ZMPIcons-Regular.eot +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.ttf +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff +0 -0
- package/ui/www/fonts/ZMPIcons-Regular.woff2 +0 -0
- package/ui/www/images/logo.png +0 -0
- package/ui/www/index.html +0 -1
- package/ui/www/js/app.js +0 -3
- package/ui/www/js/app.js.LICENSE.txt +0 -20
- package/ui/www/js/app.js.map +0 -1
- package/ui/www/static/icons/apple-touch-icon.png +0 -0
- package/ui/www/static/icons/favicon.png +0 -0
- package/utils/dist/get-app-info.dev.js +0 -54
package/create/init-zmp-ui.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/* eslint no-console: off */
|
|
3
|
-
const exec = require('exec-sh');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const chalk = require('chalk');
|
|
6
|
-
const logSymbols = require('log-symbols');
|
|
7
|
-
const fse = require('../utils/fs-extra');
|
|
8
|
-
const generatePackageJson = require('./utils/generate-package-json');
|
|
9
|
-
const generateNpmScripts = require('./utils/generate-npm-scripts');
|
|
10
|
-
|
|
11
|
-
const generateAppConfig = require('./utils/generate-app-config');
|
|
12
|
-
|
|
13
|
-
const createFolders = require('./templates/create-folders');
|
|
14
|
-
const copyAssets = require('./templates/copy-assets');
|
|
15
|
-
const generateReadme = require('./utils/generate-readme');
|
|
16
|
-
const generateGitignore = require('./utils/generate-gitignore');
|
|
17
|
-
const log = require('../utils/log');
|
|
18
|
-
const config = require('../config');
|
|
19
|
-
|
|
20
|
-
const waitText = chalk.gray('(Please wait, it can take a while)');
|
|
21
|
-
|
|
22
|
-
module.exports = async (
|
|
23
|
-
options = {},
|
|
24
|
-
logger,
|
|
25
|
-
{ exitOnError = true, iconFile = null } = {}
|
|
26
|
-
) => {
|
|
27
|
-
const cwd = options.cwd || process.cwd();
|
|
28
|
-
const isRunningInCwd = cwd === process.cwd();
|
|
29
|
-
function errorExit(err) {
|
|
30
|
-
log.error(err.stderr || err);
|
|
31
|
-
if (exitOnError) process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
if (!logger) {
|
|
34
|
-
// eslint-disable-next-line
|
|
35
|
-
logger = {
|
|
36
|
-
statusStart() {},
|
|
37
|
-
statusDone() {},
|
|
38
|
-
statusError() {},
|
|
39
|
-
text() {},
|
|
40
|
-
error() {},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
// App config
|
|
44
|
-
logger.statusStart('Generating app-config.json');
|
|
45
|
-
const appConfig = generateAppConfig(options);
|
|
46
|
-
|
|
47
|
-
fse.writeFileSync(
|
|
48
|
-
path.join(cwd, config.filename.appConfig),
|
|
49
|
-
appConfig.content
|
|
50
|
-
);
|
|
51
|
-
logger.statusDone('Generating app-config.json');
|
|
52
|
-
|
|
53
|
-
if (!options.newProject) {
|
|
54
|
-
const deployScripts = generateNpmScripts(['r']).map((s) => {
|
|
55
|
-
return `${s.icon} Run "npm run ${s.name}" - ${s.description}`;
|
|
56
|
-
});
|
|
57
|
-
logger.text(deployScripts.join('\n'));
|
|
58
|
-
process.exit(0);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Package
|
|
62
|
-
logger.statusStart('Generating package.json');
|
|
63
|
-
const packageJson = generatePackageJson(options);
|
|
64
|
-
fse.writeFileSync(path.join(cwd, 'package.json'), packageJson.content);
|
|
65
|
-
fse.writeFileSync(
|
|
66
|
-
path.join(cwd, config.filename.zmpConfig),
|
|
67
|
-
JSON.stringify(options, '', 2)
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
logger.statusDone('Generating package.json');
|
|
71
|
-
|
|
72
|
-
// Create Folders
|
|
73
|
-
logger.statusStart('Creating required folders structure');
|
|
74
|
-
try {
|
|
75
|
-
createFolders(options);
|
|
76
|
-
} catch (err) {
|
|
77
|
-
logger.statusError('Error creating required folders structure');
|
|
78
|
-
// if (err) logger.error(err.stderr);
|
|
79
|
-
errorExit(err);
|
|
80
|
-
}
|
|
81
|
-
logger.statusDone('Creating required folders structure');
|
|
82
|
-
|
|
83
|
-
// Install NPM depenencies
|
|
84
|
-
logger.statusStart(`${'Installing NPM Dependencies'} ${waitText}`);
|
|
85
|
-
try {
|
|
86
|
-
if (!isRunningInCwd) {
|
|
87
|
-
await exec.promise(
|
|
88
|
-
`cd ${cwd.replace(
|
|
89
|
-
/ /g,
|
|
90
|
-
'\\ '
|
|
91
|
-
)} && npm install ${packageJson.dependencies.join(' ')} --save`,
|
|
92
|
-
true
|
|
93
|
-
);
|
|
94
|
-
} else {
|
|
95
|
-
await exec.promise(
|
|
96
|
-
`npm install ${packageJson.dependencies.join(' ')} --save`,
|
|
97
|
-
true
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
} catch (err) {
|
|
101
|
-
logger.statusError('Error installing NPM Dependencies');
|
|
102
|
-
// if (err) logger.error(err.stderr);
|
|
103
|
-
errorExit(err);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
logger.statusDone('Installing NPM Dependencies');
|
|
107
|
-
// Install NPM dev depenencies
|
|
108
|
-
logger.statusStart(`${'Installing NPM Dev Dependencies'} ${waitText}`);
|
|
109
|
-
try {
|
|
110
|
-
if (!isRunningInCwd) {
|
|
111
|
-
await exec.promise(
|
|
112
|
-
`cd ${cwd.replace(
|
|
113
|
-
/ /g,
|
|
114
|
-
'\\ '
|
|
115
|
-
)} && npm install ${packageJson.devDependencies.join(' ')} --save-dev`,
|
|
116
|
-
true
|
|
117
|
-
);
|
|
118
|
-
} else {
|
|
119
|
-
await exec.promise(
|
|
120
|
-
`npm install ${packageJson.devDependencies.join(' ')} --save-dev`,
|
|
121
|
-
true
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
} catch (err) {
|
|
125
|
-
logger.statusError('Error installing NPM Dev Dependencies');
|
|
126
|
-
// if (err) logger.error(err.stderr);
|
|
127
|
-
errorExit(err);
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
logger.statusDone('Installing NPM Dev Dependencies');
|
|
131
|
-
|
|
132
|
-
if (packageJson.postInstall && packageJson.postInstall.length) {
|
|
133
|
-
logger.statusStart('Executing NPM Scripts');
|
|
134
|
-
try {
|
|
135
|
-
if (!isRunningInCwd) {
|
|
136
|
-
await exec.promise(
|
|
137
|
-
`cd ${cwd.replace(/ /g, '\\ ')} && npm run postinstall`,
|
|
138
|
-
true
|
|
139
|
-
);
|
|
140
|
-
} else {
|
|
141
|
-
await exec.promise('npm run postinstall', true);
|
|
142
|
-
}
|
|
143
|
-
} catch (err) {
|
|
144
|
-
logger.statusError('Error executing NPM Scripts');
|
|
145
|
-
// if (err) logger.error(err.stderr);
|
|
146
|
-
errorExit(err);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
logger.statusDone('Executing NPM Scripts');
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Create Project Files
|
|
153
|
-
logger.statusStart('Creating project files');
|
|
154
|
-
const filesToCopy = copyAssets(options, iconFile);
|
|
155
|
-
try {
|
|
156
|
-
// eslint-disable-next-line
|
|
157
|
-
await Promise.all(
|
|
158
|
-
filesToCopy.map((f) => {
|
|
159
|
-
if (f.from) {
|
|
160
|
-
return fse.copyFileAsync(f.from, f.to);
|
|
161
|
-
}
|
|
162
|
-
if (f.content) {
|
|
163
|
-
return fse.writeFileAsync(f.to, f.content);
|
|
164
|
-
}
|
|
165
|
-
return Promise.resolve();
|
|
166
|
-
})
|
|
167
|
-
);
|
|
168
|
-
} catch (err) {
|
|
169
|
-
logger.statusError('Error creating project files');
|
|
170
|
-
// if (err) logger.error(err.stderr || err);
|
|
171
|
-
errorExit(err);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Generate Readme
|
|
176
|
-
const readMeContent = generateReadme(options);
|
|
177
|
-
try {
|
|
178
|
-
fse.writeFileSync(path.join(cwd, 'README.md'), readMeContent);
|
|
179
|
-
} catch (err) {
|
|
180
|
-
logger.statusError('Error creating project files');
|
|
181
|
-
// if (err) logger.error(err.stderr || err);
|
|
182
|
-
errorExit(err);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Generate .gitignore
|
|
187
|
-
const gitignoreContent = generateGitignore(options);
|
|
188
|
-
try {
|
|
189
|
-
fse.writeFileSync(path.join(cwd, '.gitignore'), gitignoreContent);
|
|
190
|
-
} catch (err) {
|
|
191
|
-
logger.statusError('Error creating project files');
|
|
192
|
-
// if (err) logger.error(err.stderr || err);
|
|
193
|
-
errorExit(err);
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
logger.statusDone('Creating project files');
|
|
198
|
-
|
|
199
|
-
let npmScripts = generateNpmScripts(['s', 'r']).map((s) => {
|
|
200
|
-
return `- ${s.icon} Run "npm run ${s.name}" - ${s.description}`;
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
// Final Text
|
|
204
|
-
const finalText = `
|
|
205
|
-
${chalk.bold(logSymbols.success)} ${chalk.bold('Done!')} 💪
|
|
206
|
-
|
|
207
|
-
${chalk.bold(logSymbols.info)} ${chalk.bold('Next steps:')}
|
|
208
|
-
${npmScripts.join('\n ')}
|
|
209
|
-
- 📖 Visit documentation at ${chalk.bold('https://mini.zalo.me/')}
|
|
210
|
-
- 📖 Check ${chalk.bold(
|
|
211
|
-
'README.md'
|
|
212
|
-
)} in project root folder with further instructions
|
|
213
|
-
`;
|
|
214
|
-
|
|
215
|
-
logger.text(finalText);
|
|
216
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const indent = require('../utils/indent');
|
|
2
|
-
const templateIf = require('../utils/template-if');
|
|
3
|
-
|
|
4
|
-
module.exports = (options) => {
|
|
5
|
-
const { framework, pkg, name, bundler, stateManagement } = options;
|
|
6
|
-
|
|
7
|
-
return indent(
|
|
8
|
-
0,
|
|
9
|
-
`
|
|
10
|
-
name: '${name}', // App name
|
|
11
|
-
theme: 'auto', // Automatic theme detection
|
|
12
|
-
${templateIf(stateManagement === 'store', () => `
|
|
13
|
-
// App store
|
|
14
|
-
store: store,
|
|
15
|
-
`)}
|
|
16
|
-
${templateIf(framework === 'core', () => `el: '#app', // App root element`)}
|
|
17
|
-
${templateIf(
|
|
18
|
-
framework === 'core' && bundler,
|
|
19
|
-
() => `component: App, // App main component`
|
|
20
|
-
)}
|
|
21
|
-
${templateIf(pkg, () => `id: '${pkg}', // App bundle ID`)}
|
|
22
|
-
${templateIf(
|
|
23
|
-
framework === 'core',
|
|
24
|
-
() => ` on: {
|
|
25
|
-
init: function () {
|
|
26
|
-
var zmp = this;
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
`
|
|
30
|
-
)}
|
|
31
|
-
`
|
|
32
|
-
).trim();
|
|
33
|
-
};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/* Material Icons Font (for MD theme) */
|
|
2
|
-
@font-face {
|
|
3
|
-
font-family: 'Material Icons';
|
|
4
|
-
font-style: normal;
|
|
5
|
-
font-weight: 400;
|
|
6
|
-
src: url(//h5.zdn.vn/static/fonts/MaterialIcons-Regular.eot);
|
|
7
|
-
src: local('Material Icons'),
|
|
8
|
-
local('MaterialIcons-Regular'),
|
|
9
|
-
url(//h5.zdn.vn/static/fonts/MaterialIcons-Regular.woff2) format('woff2'),
|
|
10
|
-
url(//h5.zdn.vn/static/fonts/MaterialIcons-Regular.woff) format('woff'),
|
|
11
|
-
url(//h5.zdn.vn/static/fonts/MaterialIcons-Regular.ttf) format('truetype');
|
|
12
|
-
}
|
|
13
|
-
.material-icons {
|
|
14
|
-
font-family: 'Material Icons';
|
|
15
|
-
font-weight: normal;
|
|
16
|
-
font-style: normal;
|
|
17
|
-
font-size: 24px;
|
|
18
|
-
display: inline-flex;
|
|
19
|
-
line-height: 1;
|
|
20
|
-
text-transform: none;
|
|
21
|
-
letter-spacing: normal;
|
|
22
|
-
word-wrap: normal;
|
|
23
|
-
white-space: nowrap;
|
|
24
|
-
direction: ltr;
|
|
25
|
-
-webkit-font-smoothing: antialiased;
|
|
26
|
-
text-rendering: optimizeLegibility;
|
|
27
|
-
-moz-osx-font-smoothing: grayscale;
|
|
28
|
-
font-feature-settings: 'liga';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* ZMP Icons Font (for iOS theme) */
|
|
32
|
-
@font-face {
|
|
33
|
-
font-family: 'ZMP Icons';
|
|
34
|
-
font-style: normal;
|
|
35
|
-
font-weight: 400;
|
|
36
|
-
src: url("//h5.zdn.vn/static/fonts/ZMPIcons-Regular-v2.woff2") format("woff2"),
|
|
37
|
-
url("//h5.zdn.vn/static/fonts/ZMPIcons-Regular-v2.woff") format("woff"),
|
|
38
|
-
url("//h5.zdn.vn/static/fonts/ZMPIcons-Regular-v2.ttf") format("truetype");
|
|
39
|
-
}
|
|
40
|
-
.zmp-icons {
|
|
41
|
-
font-family: 'ZMP Icons';
|
|
42
|
-
font-weight: normal;
|
|
43
|
-
font-style: normal;
|
|
44
|
-
font-size: 28px;
|
|
45
|
-
line-height: 1;
|
|
46
|
-
letter-spacing: normal;
|
|
47
|
-
text-transform: none;
|
|
48
|
-
display: inline-flex;
|
|
49
|
-
white-space: nowrap;
|
|
50
|
-
word-wrap: normal;
|
|
51
|
-
direction: ltr;
|
|
52
|
-
-webkit-font-smoothing: antialiased;
|
|
53
|
-
text-rendering: optimizeLegibility;
|
|
54
|
-
-moz-osx-font-smoothing: grayscale;
|
|
55
|
-
-webkit-font-feature-settings: "liga";
|
|
56
|
-
-moz-font-feature-settings: "liga=1";
|
|
57
|
-
-moz-font-feature-settings: "liga";
|
|
58
|
-
font-feature-settings: "liga";
|
|
59
|
-
text-align: center;
|
|
60
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
const webpack = require('webpack');
|
|
2
|
-
const ora = require('ora');
|
|
3
|
-
const rm = require('rimraf');
|
|
4
|
-
const chalk = require('chalk');
|
|
5
|
-
const config = require('./webpack.config.js');
|
|
6
|
-
|
|
7
|
-
const env = process.env.NODE_ENV || 'development';
|
|
8
|
-
const target = process.env.TARGET || 'web';
|
|
9
|
-
|
|
10
|
-
const spinner = ora(
|
|
11
|
-
env === 'production'
|
|
12
|
-
? 'building for production...'
|
|
13
|
-
: 'building development version...'
|
|
14
|
-
);
|
|
15
|
-
spinner.start();
|
|
16
|
-
|
|
17
|
-
rm('./www/', (removeErr) => {
|
|
18
|
-
if (removeErr) throw removeErr;
|
|
19
|
-
|
|
20
|
-
webpack(config, (err, stats) => {
|
|
21
|
-
if (err) throw err;
|
|
22
|
-
spinner.stop();
|
|
23
|
-
|
|
24
|
-
process.stdout.write(
|
|
25
|
-
`${stats.toString({
|
|
26
|
-
colors: true,
|
|
27
|
-
modules: false,
|
|
28
|
-
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
|
|
29
|
-
chunks: false,
|
|
30
|
-
chunkModules: false,
|
|
31
|
-
})}\n\n`
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
if (stats.hasErrors()) {
|
|
35
|
-
console.log(chalk.red('Build failed with errors.\n'));
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
console.log(chalk.cyan('Build complete.\n'));
|
|
40
|
-
});
|
|
41
|
-
});
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fse = require('../../utils/fs-extra');
|
|
3
|
-
const stylesExtension = require('../utils/styles-extension');
|
|
4
|
-
const copyVueAssets = require('./vue/copy-assets');
|
|
5
|
-
const copyReactAssets = require('./react/copy-assets');
|
|
6
|
-
const copyReactTsAssets = require('./react-typescript/copy-assets');
|
|
7
|
-
const generateIndex = require('./generate-index');
|
|
8
|
-
const generateStyles = require('./generate-styles');
|
|
9
|
-
const generateScripts = require('./generate-scripts');
|
|
10
|
-
const generateZMPCustom = require('./generate-zmp-custom');
|
|
11
|
-
const copyZauiAssets = require('./zaui/copy-assets');
|
|
12
|
-
const { projectFramework } = require('../../utils/constants');
|
|
13
|
-
|
|
14
|
-
module.exports = (options, iconFile) => {
|
|
15
|
-
const cwd = options.cwd || process.cwd();
|
|
16
|
-
const {
|
|
17
|
-
package,
|
|
18
|
-
framework,
|
|
19
|
-
theming,
|
|
20
|
-
cssPreProcessor,
|
|
21
|
-
customBuild,
|
|
22
|
-
includeTailwind,
|
|
23
|
-
} = options;
|
|
24
|
-
|
|
25
|
-
const srcFolder = 'src';
|
|
26
|
-
|
|
27
|
-
const toCopy = [];
|
|
28
|
-
if (package !== 'zmp-ui') {
|
|
29
|
-
if (framework === projectFramework.VUE)
|
|
30
|
-
toCopy.push(...copyVueAssets(options));
|
|
31
|
-
if (framework === projectFramework.REACT)
|
|
32
|
-
toCopy.push(...copyReactAssets(options));
|
|
33
|
-
if (framework === projectFramework.REACT_TYPESCRIPT) {
|
|
34
|
-
toCopy.push(...copyReactTsAssets(options));
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
toCopy.push(...copyZauiAssets(options));
|
|
38
|
-
}
|
|
39
|
-
if (theming.iconFonts) {
|
|
40
|
-
// Copy Icons CSS
|
|
41
|
-
toCopy.push({
|
|
42
|
-
from: path.resolve(__dirname, 'common', 'css', 'icons.css'),
|
|
43
|
-
to: path.resolve(cwd, srcFolder, 'css', 'icons.css'),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (includeTailwind) {
|
|
48
|
-
toCopy.push(
|
|
49
|
-
{
|
|
50
|
-
from: path.resolve(__dirname, 'common', 'tailwind', 'tailwind.css'),
|
|
51
|
-
to: path.resolve(cwd, srcFolder, 'css', 'tailwind.css'),
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
from: path.resolve(
|
|
55
|
-
__dirname,
|
|
56
|
-
'common',
|
|
57
|
-
'tailwind',
|
|
58
|
-
'tailwind.config.js'
|
|
59
|
-
),
|
|
60
|
-
to: path.resolve(cwd, 'tailwind.config.js'),
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
from: path.resolve(
|
|
64
|
-
__dirname,
|
|
65
|
-
'common',
|
|
66
|
-
'tailwind',
|
|
67
|
-
'postcss.config.js'
|
|
68
|
-
),
|
|
69
|
-
to: path.resolve(cwd, 'postcss.config.js'),
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
let appScriptFileName = 'app.js';
|
|
75
|
-
if (framework === 'react-typescript') {
|
|
76
|
-
appScriptFileName = 'app.ts';
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Copy Main Assets
|
|
80
|
-
toCopy.push(
|
|
81
|
-
...[
|
|
82
|
-
{
|
|
83
|
-
content: generateIndex(options),
|
|
84
|
-
to: path.resolve(cwd, 'index.html'),
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
content: generateStyles(options),
|
|
88
|
-
to: path.resolve(
|
|
89
|
-
cwd,
|
|
90
|
-
srcFolder,
|
|
91
|
-
'css',
|
|
92
|
-
`app.${stylesExtension(cssPreProcessor)}`
|
|
93
|
-
),
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
content: generateScripts(options),
|
|
97
|
-
to: path.resolve(cwd, srcFolder, appScriptFileName),
|
|
98
|
-
},
|
|
99
|
-
]
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
// Copy Custom Build
|
|
103
|
-
if (customBuild) {
|
|
104
|
-
const customBuildAssets = generateZMPCustom(options);
|
|
105
|
-
toCopy.push(
|
|
106
|
-
...[
|
|
107
|
-
{
|
|
108
|
-
content: customBuildAssets.styles,
|
|
109
|
-
to: path.resolve(cwd, srcFolder, 'css', 'zmp-custom.less'),
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
content: customBuildAssets.scripts,
|
|
113
|
-
to: path.resolve(cwd, srcFolder, 'js', 'zmp-custom.js'),
|
|
114
|
-
},
|
|
115
|
-
]
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (!includeTailwind) {
|
|
120
|
-
// Copy PostCSS config
|
|
121
|
-
toCopy.push({
|
|
122
|
-
from: path.resolve(__dirname, 'common', 'postcss.config.js'),
|
|
123
|
-
to: path.resolve(cwd, 'postcss.config.js'),
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Copy Web Images & Icons
|
|
128
|
-
const assetsFolder = 'static';
|
|
129
|
-
fse.readdirSync(path.resolve(__dirname, 'common', 'icons')).forEach((f) => {
|
|
130
|
-
if (f.indexOf('.') === 0) return;
|
|
131
|
-
toCopy.push({
|
|
132
|
-
from: path.resolve(__dirname, 'common', 'icons', f),
|
|
133
|
-
to: path.resolve(cwd, srcFolder, assetsFolder, 'icons', f),
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
if (iconFile) {
|
|
138
|
-
fse.writeFileSync(
|
|
139
|
-
path.resolve(cwd, 'assets-src', 'web-icon.png'),
|
|
140
|
-
iconFile
|
|
141
|
-
);
|
|
142
|
-
fse.writeFileSync(
|
|
143
|
-
path.resolve(cwd, 'assets-src', 'apple-touch-icon.png'),
|
|
144
|
-
iconFile
|
|
145
|
-
);
|
|
146
|
-
} else {
|
|
147
|
-
toCopy.push({
|
|
148
|
-
from: path.resolve(__dirname, 'common', 'icons', '512x512.png'),
|
|
149
|
-
to: path.resolve(cwd, 'assets-src', 'web-icon.png'),
|
|
150
|
-
});
|
|
151
|
-
toCopy.push({
|
|
152
|
-
from: path.resolve(__dirname, 'common', 'icons', 'apple-touch-icon.png'),
|
|
153
|
-
to: path.resolve(cwd, 'assets-src', 'apple-touch-icon.png'),
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
return toCopy;
|
|
158
|
-
};
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fse = require('../../../utils/fs-extra');
|
|
3
|
-
const generateHomePage = require('./generate-home-page');
|
|
4
|
-
const generateRoot = require('./generate-root');
|
|
5
|
-
const generateStore = require('../generate-store');
|
|
6
|
-
const indent = require('../../utils/indent');
|
|
7
|
-
|
|
8
|
-
module.exports = (options) => {
|
|
9
|
-
const cwd = options.cwd || process.cwd();
|
|
10
|
-
const { template, bundler } = options;
|
|
11
|
-
const toCopy = [];
|
|
12
|
-
const srcFolder = bundler ? 'src' : 'www';
|
|
13
|
-
|
|
14
|
-
// Copy Pages
|
|
15
|
-
const pages = [
|
|
16
|
-
...(template !== 'blank' ? ['404', 'about', 'dynamic-route', 'form'] : []),
|
|
17
|
-
...(template === 'tabs' ? ['catalog', 'product', 'settings'] : []),
|
|
18
|
-
...(template === 'split-view' ? ['left-page-1', 'left-page-2'] : []),
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
pages.forEach((p) => {
|
|
22
|
-
const src = path.resolve(__dirname, 'pages', `${p}.html`);
|
|
23
|
-
const dest = path.resolve(cwd, srcFolder, 'pages');
|
|
24
|
-
if (bundler !== 'webpack') {
|
|
25
|
-
toCopy.push({
|
|
26
|
-
from: src,
|
|
27
|
-
to: path.resolve(dest, `${p}.html`),
|
|
28
|
-
});
|
|
29
|
-
} else {
|
|
30
|
-
let content = fse.readFileSync(src);
|
|
31
|
-
if (content.trim().indexOf('<template') !== 0) {
|
|
32
|
-
content = `<template>\n${content.trim()}\n</template>\n<script>\nexport default () => {\n return $render;\n};\n</script>`;
|
|
33
|
-
}
|
|
34
|
-
toCopy.push({
|
|
35
|
-
content,
|
|
36
|
-
to: path.resolve(dest, `${p}.zmp.html`),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
toCopy.push({
|
|
41
|
-
content: generateStore(options),
|
|
42
|
-
to: path.resolve(cwd, srcFolder, 'store.js'),
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (bundler) {
|
|
46
|
-
toCopy.push({
|
|
47
|
-
content: `<template>\n${indent(
|
|
48
|
-
2,
|
|
49
|
-
generateHomePage(options).trim()
|
|
50
|
-
)}\n</template>\n<script>\nexport default () => {\n return $render;\n}\n</script>`,
|
|
51
|
-
to: path.resolve(cwd, srcFolder, 'pages', 'home.zmp.html'),
|
|
52
|
-
});
|
|
53
|
-
toCopy.push({
|
|
54
|
-
content: generateRoot(options),
|
|
55
|
-
to: path.resolve(cwd, srcFolder, 'app.zmp.html'),
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
toCopy.push({
|
|
59
|
-
from: path.resolve(__dirname, 'babel.config.js'),
|
|
60
|
-
to: path.resolve(cwd, 'babel.config.js'),
|
|
61
|
-
});
|
|
62
|
-
} else {
|
|
63
|
-
// Copy ZMP
|
|
64
|
-
toCopy.push(...[]);
|
|
65
|
-
fse
|
|
66
|
-
.readdirSync(path.resolve(cwd, 'node_modules', 'zmp-framework/core'))
|
|
67
|
-
.filter((f) => {
|
|
68
|
-
return (
|
|
69
|
-
f.indexOf('.js') >= 0 ||
|
|
70
|
-
f.indexOf('.css') >= 0 ||
|
|
71
|
-
f.indexOf('.map') >= 0
|
|
72
|
-
);
|
|
73
|
-
})
|
|
74
|
-
.forEach((f) => {
|
|
75
|
-
toCopy.push({
|
|
76
|
-
from: path.resolve(cwd, 'node_modules', 'zmp-framework/core', f),
|
|
77
|
-
to: path.resolve(cwd, srcFolder, 'zmp-framework/core', f),
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return toCopy;
|
|
83
|
-
};
|