shoplazza-cli 1.0.7-beta.1 → 1.0.7-beta.2

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 (99) hide show
  1. package/bin/shoplazza +5 -1
  2. package/lib/app/api/index.js +2 -2
  3. package/lib/app/commands/build.js +4 -4
  4. package/lib/app/commands/connect.js +73 -0
  5. package/lib/app/commands/create.js +1 -1
  6. package/lib/app/commands/deploy.js +4 -3
  7. package/lib/app/commands/release.js +59 -0
  8. package/lib/app/commands/serve.js +12 -11
  9. package/lib/app/commands/versions.js +10 -7
  10. package/lib/app/index.js +3 -0
  11. package/lib/app/template/basic-app/theme-app/blocks/index.liquid +3 -3
  12. package/lib/app/template/basic-app/theme-app/locales/ar-SA.json +1 -0
  13. package/lib/app/template/basic-app/theme-app/locales/de-DE.json +1 -0
  14. package/lib/app/template/basic-app/theme-app/locales/en-US.json +6 -0
  15. package/lib/app/template/basic-app/theme-app/locales/es-ES.json +1 -0
  16. package/lib/app/template/basic-app/theme-app/locales/fr-FR.json +1 -0
  17. package/lib/app/template/basic-app/theme-app/locales/id-ID.json +1 -0
  18. package/lib/app/template/basic-app/theme-app/locales/it-IT.json +1 -0
  19. package/lib/app/template/basic-app/theme-app/locales/ja-JP.json +1 -0
  20. package/lib/app/template/basic-app/theme-app/locales/ko-KR.json +1 -0
  21. package/lib/app/template/basic-app/theme-app/locales/nl-NL.json +1 -0
  22. package/lib/app/template/basic-app/theme-app/locales/pl-PL.json +1 -0
  23. package/lib/app/template/basic-app/theme-app/locales/pt-PT.json +1 -0
  24. package/lib/app/template/basic-app/theme-app/locales/ru-RU.json +1 -0
  25. package/lib/app/template/basic-app/theme-app/locales/th-TH.json +1 -0
  26. package/lib/app/template/basic-app/theme-app/locales/zh-CN.json +6 -0
  27. package/lib/app/template/basic-app/theme-app/locales/zh-TW.json +1 -0
  28. package/lib/app/template/basic-app/theme-app/snippets/index.liquid +1 -1
  29. package/lib/app/template/embed-app/theme-app/blocks/index.liquid +4 -4
  30. package/lib/app/template/embed-app/theme-app/locales/ar-SA.json +1 -3
  31. package/lib/app/template/embed-app/theme-app/locales/de-DE.json +1 -3
  32. package/lib/app/template/embed-app/theme-app/locales/en-US.json +4 -1
  33. package/lib/app/template/embed-app/theme-app/locales/es-ES.json +1 -3
  34. package/lib/app/template/embed-app/theme-app/locales/fr-FR.json +1 -3
  35. package/lib/app/template/embed-app/theme-app/locales/id-ID.json +1 -3
  36. package/lib/app/template/embed-app/theme-app/locales/it-IT.json +1 -3
  37. package/lib/app/template/embed-app/theme-app/locales/ja-JP.json +1 -3
  38. package/lib/app/template/embed-app/theme-app/locales/ko-KR.json +1 -3
  39. package/lib/app/template/embed-app/theme-app/locales/nl-NL.json +1 -3
  40. package/lib/app/template/embed-app/theme-app/locales/pl-PL.json +1 -3
  41. package/lib/app/template/embed-app/theme-app/locales/pt-PT.json +1 -3
  42. package/lib/app/template/embed-app/theme-app/locales/ru-RU.json +1 -3
  43. package/lib/app/template/embed-app/theme-app/locales/th-TH.json +1 -3
  44. package/lib/app/template/embed-app/theme-app/locales/zh-CN.json +4 -1
  45. package/lib/app/template/embed-app/theme-app/locales/zh-TW.json +1 -3
  46. package/lib/app/template/embed-app/theme-app/snippets/index.liquid +1 -1
  47. package/lib/app/utils/config.js +3 -3
  48. package/lib/app/utils/index.js +8 -8
  49. package/lib/auth/getCode.js +2 -2
  50. package/lib/auth/index.js +2 -2
  51. package/lib/check.js +26 -0
  52. package/lib/checkout/api.js +1 -2
  53. package/lib/checkout/build.js +1 -1
  54. package/lib/checkout/create.js +1 -1
  55. package/lib/checkout/deploy.js +1 -1
  56. package/lib/checkout/dev/index.js +1 -1
  57. package/lib/checkout/fields.js +1 -1
  58. package/lib/checkout/preview.js +1 -1
  59. package/lib/checkout/push.js +1 -1
  60. package/lib/checkout/undeploy.js +1 -1
  61. package/lib/checkout/util.js +1 -1
  62. package/lib/checkout/verify.js +1 -1
  63. package/lib/commands/theme/delete.js +1 -1
  64. package/lib/commands/theme/package.js +1 -1
  65. package/lib/commands/theme/publish.js +1 -1
  66. package/lib/commands/theme/pull.js +1 -1
  67. package/lib/commands/theme/push.js +1 -1
  68. package/lib/commands/theme/serve.js +2 -2
  69. package/lib/common/login.js +1 -1
  70. package/lib/function/bin/index.js +20 -0
  71. package/lib/function/bin/javy/javy-arm-linux-v5.0.1 +0 -0
  72. package/lib/function/bin/javy/javy-arm-macos-v5.0.1 +0 -0
  73. package/lib/function/bin/javy/javy-x86_64-linux-v5.0.1 +0 -0
  74. package/lib/function/bin/javy/javy-x86_64-macos-v5.0.1 +0 -0
  75. package/lib/function/bin/javy/javy-x86_64-windows-v5.0.1 +0 -0
  76. package/lib/function/commands/compile.js +42 -0
  77. package/lib/function/commands/create.js +77 -0
  78. package/lib/function/commands/list.js +18 -0
  79. package/lib/function/commands/release.js +69 -0
  80. package/lib/function/index.js +24 -0
  81. package/lib/function/template/js/README.md +37 -0
  82. package/lib/function/template/js/_gitignore +4 -0
  83. package/lib/function/template/js/extension.config.json +5 -0
  84. package/lib/function/template/js/package.json +17 -0
  85. package/lib/function/template/js/src/index.js +64 -0
  86. package/lib/function/utils.js +29 -0
  87. package/lib/openAPI/api.js +1 -1
  88. package/lib/openAPI/index.js +0 -1
  89. package/lib/partner-api/axios.js +67 -0
  90. package/lib/partner-api/index.js +79 -0
  91. package/lib/{checkout → utils}/console.js +3 -2
  92. package/lib/utils/env.js +17 -0
  93. package/lib/utils/file.js +48 -0
  94. package/lib/utils/platform.js +37 -0
  95. package/lib/{utils.js → utils/utils.js} +2 -2
  96. package/package.json +1 -1
  97. /package/lib/app/template/basic-app/{theme-extension.config.json → extension.config.json} +0 -0
  98. /package/lib/app/template/embed-app/{theme-extension.config.json → extension.config.json} +0 -0
  99. /package/lib/{config.js → utils/config.js} +0 -0
package/bin/shoplazza CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.noDeprecation = true; // 全局禁用废弃警告
4
+ require('../lib/check');
4
5
  const { program } = require('commander');
5
6
  const updateNotifier = require('update-notifier');
6
7
  const Sentry = require('@sentry/node');
@@ -11,6 +12,7 @@ require('../lib/tracing');
11
12
 
12
13
  const { makeCheckoutCommand } = require('../lib/checkout');
13
14
  const { initThemeAppCommand } = require('../lib/app');
15
+ const { makeFunctionCommand } = require('../lib/function');
14
16
 
15
17
  Sentry.init({
16
18
  dsn: 'https://89964605acaf4db8839f2d5237396d6c@sentry.shoplazza.com/730',
@@ -29,6 +31,7 @@ updateNotifier({ pkg }).notify({
29
31
  isGlobal: true
30
32
  });
31
33
  program.usage('[command] [options]');
34
+ program.option('--debug <ent>', 'debug mode')
32
35
 
33
36
  program.command('version').description('Welcome to the Shoplazza CLI').action(require('../lib/commands/version'));
34
37
  program.description('Welcome to the Shoplazza CLI').option('-v --version').action(require('../lib/commands/version'));
@@ -112,11 +115,12 @@ theme
112
115
  .option('-t, --theme <theme>', 'The ID of the theme that you want to delete.')
113
116
  .action(require('../lib/commands/theme/delete'));
114
117
 
115
-
116
118
  // checkout cli
117
119
  makeCheckoutCommand(program);
118
120
  // theme app cli
119
121
  initThemeAppCommand(program);
122
+ // function cli
123
+ makeFunctionCommand(program);
120
124
 
121
125
  program.parse(process.argv);
122
126
  !program.args.length && program.help();
@@ -1,5 +1,5 @@
1
1
  const instance = require('../../openAPI/index');
2
-
2
+ const request = require('../../partner-api/axios');
3
3
 
4
4
  /**
5
5
  * 获取主题列表
@@ -92,5 +92,5 @@ module.exports = {
92
92
  getThemeAppVersionList,
93
93
  toCreateThemeAppVersion,
94
94
  toDeployThemeApp,
95
- getTaskStatus
95
+ getTaskStatus,
96
96
  };
@@ -2,7 +2,7 @@ const chalk = require('chalk');
2
2
  const inquirer = require('inquirer');
3
3
  const ora = require('ora');
4
4
  const fsExtra = require('fs-extra');
5
- const { getThemeAppConfig, compareVersions, compress } = require('../utils');
5
+ const { getThemeExtensionConfig, compareVersions, compress } = require('../utils');
6
6
  const { THEME_APP_DIR_PATH, EXCHANGE_TOKEN, STORE_DOMAIN } = require('../utils/config');
7
7
  const { getThemeAppVersionList, toCreateThemeAppVersion, getTaskStatus } = require('../api');
8
8
  const { useOss } = require('../../oss');
@@ -35,7 +35,7 @@ async function createNewVersion(extensionId, version, description) {
35
35
  const res = await getTaskStatus({ taskId });
36
36
  if (res.data?.state === 1) {
37
37
  clearInterval(timer);
38
- spinner.succeed(chalk.green(`Successfully built a new version(v${version})!`));
38
+ spinner.succeed(chalk.green(`Successfully build a new version(v${version})!`));
39
39
  resolve();
40
40
  } else if (res.data?.state === 2) {
41
41
  clearInterval(timer);
@@ -69,7 +69,7 @@ async function usePrompt(extensionId) {
69
69
  {
70
70
  type: 'input',
71
71
  name: 'newVersion',
72
- message: 'Enter the new version number:',
72
+ message: 'Enter the new version number(e.g., 1.0.0):',
73
73
  validate: (newVersion) => {
74
74
  if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.test(newVersion)) {
75
75
  return chalk.red('❌ Version must follow the format X.Y.Z (e.g., 1.0.0).');
@@ -98,7 +98,7 @@ async function usePrompt(extensionId) {
98
98
 
99
99
  async function build() {
100
100
  try {
101
- const { extensionId } = await getThemeAppConfig();
101
+ const { extensionId } = await getThemeExtensionConfig();
102
102
  if (!extensionId) {
103
103
  throw new Error('ExtensionId is empty, please use `serve` command first.');
104
104
  }
@@ -0,0 +1,73 @@
1
+ const chalk = require('chalk');
2
+ const inquirer = require('inquirer');
3
+ const { getThemeExtensionConfig, setThemeExtensionConfig } = require('../utils');
4
+ const { toConnectApp } = require('../../partner-api/index');
5
+
6
+ /**
7
+ * 交互式命令行
8
+ */
9
+ async function usePrompt() {
10
+ return await inquirer.prompt([
11
+ {
12
+ type: 'input',
13
+ name: 'clientId',
14
+ message: 'Please enter the shoplazza app Client ID:',
15
+ prefix: '*',
16
+ validate: (clientId) => {
17
+ if (!clientId.trim()) {
18
+ return 'Client ID cannot be empty';
19
+ }
20
+ return true;
21
+ }
22
+ },
23
+ {
24
+ type: 'input',
25
+ name: 'clientSecret',
26
+ message: 'Please enter the shoplazza app Client Secret:',
27
+ prefix: '*',
28
+ validate: (clientSecret) => {
29
+ if (!clientSecret.trim()) {
30
+ return 'Client Secret cannot be empty';
31
+ }
32
+ return true;
33
+ }
34
+ }
35
+ ]);
36
+ }
37
+
38
+ async function connectToApp() {
39
+ try {
40
+ let { extensionId, appId, accessToken } = await getThemeExtensionConfig();
41
+ if (!extensionId) {
42
+ throw new Error('ExtensionId is empty, please use `serve` command first.');
43
+ }
44
+
45
+ if (!accessToken) {
46
+ const result = await usePrompt();
47
+ appId = result.clientId;
48
+ appSecret = result.clientSecret;
49
+ await setThemeExtensionConfig({
50
+ appId,
51
+ appSecret
52
+ });
53
+ }
54
+
55
+ const res = await toConnectApp({
56
+ extensionId,
57
+ appId
58
+ });
59
+
60
+ if (+res.data?.code === 200) {
61
+ console.log(chalk.green('Connected to the Shoplazza app successfully!'));
62
+ console.log(chalk.cyan('You can use the `release` command to release a specific version to the Shoplazza app.'));
63
+ } else if (+res.data?.code === 400) {
64
+ console.log(chalk.green(res.data?.message));
65
+ }
66
+ } catch (error) {
67
+ console.error(chalk.red(`[ERROR IN CONNECT] ${error.message}`));
68
+ }
69
+ }
70
+
71
+ module.exports = {
72
+ connect: connectToApp
73
+ };
@@ -40,7 +40,7 @@ async function initProj(projectPath, projectName, isBasicApp = false) {
40
40
  const replacementConfig = {
41
41
  'package.json': { projectName },
42
42
  'theme-app/blocks/index.liquid': { projectName },
43
- 'theme-extension.config.json': { projectName }
43
+ 'extension.config.json': { projectName }
44
44
  };
45
45
  for (const [filePath, replacements] of Object.entries(replacementConfig)) {
46
46
  const fullPath = path.resolve(projectPath, filePath);
@@ -1,7 +1,7 @@
1
1
  const inquirer = require('inquirer');
2
2
  const chalk = require('chalk');
3
3
  const ora = require('ora');
4
- const { getThemeAppConfig } = require('../utils');
4
+ const { getThemeExtensionConfig } = require('../utils');
5
5
  const { getThemeAppVersionList, toDeployThemeApp } = require('../api');
6
6
 
7
7
  async function deployVersion(extensionId, versionInfo) {
@@ -23,14 +23,15 @@ async function usePrompt(versionList) {
23
23
  type: 'list',
24
24
  name: 'selectedVersion',
25
25
  message: 'Select a version to deploy:',
26
- choices
26
+ choices,
27
+ loop: false
27
28
  }
28
29
  ]);
29
30
  }
30
31
 
31
32
  async function deploy() {
32
33
  try {
33
- const { extensionId } = await getThemeAppConfig();
34
+ const { extensionId } = await getThemeExtensionConfig();
34
35
  if (!extensionId) {
35
36
  throw new Error('ExtensionId is empty, please use `serve` command first.');
36
37
  }
@@ -0,0 +1,59 @@
1
+ const inquirer = require('inquirer');
2
+ const chalk = require('chalk');
3
+ const ora = require('ora');
4
+ const { getThemeExtensionConfig } = require('../utils');
5
+ const { getThemeAppVersionList } = require('../api');
6
+ const { toReleaseApp } = require('../../partner-api/index');
7
+
8
+ async function releaseVersion(extensionId, versionInfo) {
9
+ const res = await toReleaseApp({
10
+ extensionId,
11
+ versionId: versionInfo.version_id
12
+ });
13
+ console.log(chalk.green(`Version ${versionInfo.version} has been released successfully.`));
14
+ }
15
+
16
+ async function usePrompt(versionList) {
17
+ const choices = versionList.map((v) => ({
18
+ name: `${v.version} (${v.exts}) - ${v.created_at}`,
19
+ value: v.version_id
20
+ }));
21
+ return inquirer.prompt([
22
+ {
23
+ type: 'list',
24
+ name: 'selectedVersion',
25
+ message: 'Select a version to release:',
26
+ choices,
27
+ loop: false
28
+ }
29
+ ]);
30
+ }
31
+
32
+ async function releaseToApp() {
33
+ try {
34
+ const { extensionId, appId } = await getThemeExtensionConfig();
35
+ if (!extensionId) {
36
+ throw new Error('ExtensionId is empty, please use `serve` command first.');
37
+ }
38
+ if (!appId) {
39
+ throw new Error('Missing appId, please use `connect` command first.');
40
+ }
41
+ const spinner = ora('Fetching version list...').start();
42
+ const res = await getThemeAppVersionList(extensionId);
43
+ const versionList = res.data?.data || [];
44
+ if (!versionList.length) {
45
+ spinner.succeed('Version list loaded.');
46
+ throw new Error('No version found, please use `build` command to upload a version first.');
47
+ }
48
+ spinner.succeed('Version list loaded.');
49
+ const { selectedVersion } = await usePrompt(versionList);
50
+ const versionInfo = versionList.find((v) => v.version_id === selectedVersion);
51
+ await releaseVersion(extensionId, versionInfo);
52
+ } catch (error) {
53
+ console.error(chalk.red(`[ERROR IN DEPLOY] ${error.message}`));
54
+ }
55
+ }
56
+
57
+ module.exports = {
58
+ release: releaseToApp
59
+ };
@@ -3,7 +3,7 @@ const inquirer = require('inquirer');
3
3
  const fsExtra = require('fs-extra');
4
4
  const ora = require('ora');
5
5
  const { STORE_DOMAIN, THEME_APP_DIR_PATH, EXCHANGE_TOKEN } = require('../utils/config');
6
- const { compress, getThemeAppConfig, setThemeAppConfig, getFileInfo } = require('../utils');
6
+ const { compress, getThemeExtensionConfig, setThemeExtensionConfig, getFileInfo } = require('../utils');
7
7
  const {
8
8
  toCreateThemeApp,
9
9
  toUploadThemeApp,
@@ -13,7 +13,7 @@ const {
13
13
  toUpdateFile,
14
14
  toDeleteFile
15
15
  } = require('../api');
16
- const { watchWorkspace } = require('../../utils');
16
+ const { watchWorkspace } = require('../../utils/utils');
17
17
  const { useOss } = require('../../oss');
18
18
 
19
19
  /**
@@ -89,7 +89,8 @@ async function usePrompt() {
89
89
  choices: themeList.map((theme) => ({
90
90
  name: theme.name,
91
91
  value: theme.id
92
- }))
92
+ })),
93
+ loop: false
93
94
  }
94
95
  ]);
95
96
  return selectedThemeId;
@@ -98,16 +99,16 @@ async function usePrompt() {
98
99
  /**
99
100
  * 创建主题插件
100
101
  */
101
- async function createThemeApp(themeAppConfig) {
102
+ async function createThemeApp(themeExtensionConfig) {
102
103
  const data = {
103
- title: themeAppConfig.extensionName || '' // 插件显示名称
104
+ title: themeExtensionConfig.extensionName || '' // 插件显示名称
104
105
  };
105
- if (themeAppConfig.extensionId) {
106
- data.extension_id = themeAppConfig.extensionId;
106
+ if (themeExtensionConfig.extensionId) {
107
+ data.extension_id = themeExtensionConfig.extensionId;
107
108
  }
108
109
  const res = await toCreateThemeApp(data);
109
110
  const extensionId = res.data?.extension_id;
110
- await setThemeAppConfig({ extensionId });
111
+ await setThemeExtensionConfig({ extensionId });
111
112
  return extensionId;
112
113
  }
113
114
 
@@ -154,10 +155,10 @@ function startWatcher(extensionId) {
154
155
 
155
156
  async function serve() {
156
157
  try {
157
- const themeAppConfig = await getThemeAppConfig();
158
- let extensionId = themeAppConfig.extensionId;
158
+ const themeExtensionConfig = await getThemeExtensionConfig();
159
+ let extensionId = themeExtensionConfig.extensionId;
159
160
  if (!extensionId) {
160
- extensionId = await createThemeApp(themeAppConfig);
161
+ extensionId = await createThemeApp(themeExtensionConfig);
161
162
  }
162
163
  await syncLocalFiles(extensionId);
163
164
  const selectedThemeId = await usePrompt();
@@ -1,6 +1,5 @@
1
1
  const chalk = require('chalk');
2
- const ora = require('ora');
3
- const { getThemeAppConfig, renderTable } = require('../utils');
2
+ const { getThemeExtensionConfig, renderTable } = require('../utils');
4
3
  const { getThemeAppVersionList } = require('../api');
5
4
 
6
5
  /**
@@ -8,12 +7,16 @@ const { getThemeAppVersionList } = require('../api');
8
7
  */
9
8
  function consoleTips(versionList) {
10
9
  if (versionList.length) {
10
+ const tempVersionList = versionList.map((item) => ({
11
+ ...item,
12
+ composeVersion: item.published === 1 ? `${item.version}(published)` : item.version
13
+ }));
11
14
  console.log(chalk.green('\n📜 Available Versions:'));
12
15
  console.log(
13
- renderTable(versionList, [
16
+ renderTable(tempVersionList, [
14
17
  {
15
18
  label: 'Version',
16
- filed: 'version',
19
+ filed: 'composeVersion',
17
20
  color: 'yellowBright'
18
21
  },
19
22
  {
@@ -35,9 +38,9 @@ function consoleTips(versionList) {
35
38
 
36
39
  async function versions() {
37
40
  try {
38
- const { extensionId } = await getThemeAppConfig();
39
- if(!extensionId) {
40
- throw new Error('ExtensionId is empty, please use `serve` command first.')
41
+ const { extensionId } = await getThemeExtensionConfig();
42
+ if (!extensionId) {
43
+ throw new Error('ExtensionId is empty, please use `serve` command first.');
41
44
  }
42
45
  const res = await getThemeAppVersionList(extensionId);
43
46
  const versionList = res.data?.data || [];
package/lib/app/index.js CHANGED
@@ -19,6 +19,9 @@ function initThemeAppCommand(_program) {
19
19
 
20
20
  program.command('list').description('List all theme extensions').action(require('./commands/list').list);
21
21
 
22
+ program.command('connect').description('Establish a connection between the theme extension and the shoplazza app').action(require('./commands/connect').connect);
23
+
24
+ program.command('release').description('Release a theme extension version to be applied in the shoplazza app').action(require('./commands/release').release);
22
25
  }
23
26
 
24
27
  module.exports = {
@@ -1,15 +1,15 @@
1
1
  {% use "{{projectName}}.css" %}
2
2
 
3
3
  <div id="{{projectName}}" class="container">
4
- <h1>SHOPLAZZA THEME EXTENSION</h1>
4
+ <h1>{{ 'i18n.initial.title' | t }}</h1>
5
5
  {% include "{{projectName}}" %}
6
6
  </div>
7
7
 
8
8
  {% schema %}
9
9
  {
10
10
  "name": {
11
- "en-US": "{{projectName}}-US",
12
- "zh-CN": "{{projectName}}-CN"
11
+ "en-US": "{{projectName}}(dev)",
12
+ "zh-CN": "{{projectName}}(开发)"
13
13
  },
14
14
  "settings": []
15
15
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "initial":{
3
+ "title": "SHOPLAZZA THEME EXTENSION",
4
+ "sub_title": "BASIC TYPE"
5
+ }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "initial": {
3
+ "title": "SHOPLAZZA 主题插件",
4
+ "sub_title": "BASIC 类型"
5
+ }
6
+ }
@@ -1,5 +1,5 @@
1
1
  <div>
2
- <h3>BASIC TYPE</h3>
2
+ <h3>{{ 'i18n.initial.sub_title' | t }}</h3>
3
3
  </div>
4
4
 
5
5
 
@@ -1,18 +1,18 @@
1
1
  {% include "{{projectName}}_css" %}
2
2
 
3
3
  <div id="{{projectName}}" class="container">
4
- <h1>SHOPLAZZA THEME EXTENSION</h1>
4
+ <h1>{{ 'i18n.initial.title' | t }}</h1>
5
5
  {% include "{{projectName}}" %}
6
6
  </div>
7
7
 
8
8
  {% schema %}
9
9
  {
10
10
  "name": {
11
- "en-US": "{{projectName}}-US",
12
- "zh-CN": "{{projectName}}-CN"
11
+ "en-US": "{{projectName}}(dev)",
12
+ "zh-CN": "{{projectName}}(开发)"
13
13
  },
14
+ "icon":"https://assets.shoplazza.com/oss/operation/a425c6e10e32f87a1e7271c9ed9347d8.svg",
14
15
  "target":"body",
15
- "icon":"https://cdn.shoplazza.com/oss/operation/0aee0d0cff21440e95a08ec4c560c691.svg",
16
16
  "settings": []
17
17
  }
18
18
  {% endschema %}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1,6 @@
1
1
  {
2
- "general": {}
2
+ "initial":{
3
+ "title": "SHOPLAZZA THEME EXTENSION",
4
+ "sub_title": "EMBED TYPE"
5
+ }
3
6
  }
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,3 +1,6 @@
1
1
  {
2
- "general": {}
2
+ "initial": {
3
+ "title": "SHOPLAZZA 主题插件",
4
+ "sub_title": "EMBED 类型"
5
+ }
3
6
  }
@@ -1,3 +1 @@
1
- {
2
- "general": {}
3
- }
1
+ {}
@@ -1,5 +1,5 @@
1
1
  <div>
2
- <h3>EMBED TYPE</h3>
2
+ <h3>{{ 'i18n.initial.sub_title' | t }}</h3>
3
3
  </div>
4
4
 
5
5
 
@@ -5,7 +5,7 @@ const WORKSPACE_PATH = process.cwd();
5
5
 
6
6
  const THEME_APP_DIR_PATH = path.resolve(WORKSPACE_PATH, 'theme-app');
7
7
 
8
- const THEME_APP_CONFIG_PATH = path.resolve(WORKSPACE_PATH, 'theme-extension.config.json')
8
+ const THEME_APP_CONFIG_PATH = path.resolve(WORKSPACE_PATH, 'extension.config.json')
9
9
 
10
10
  const STORE_DOMAIN = get('store_domain');
11
11
 
@@ -13,11 +13,11 @@ const EXCHANGE_TOKEN = get('exchange_token');
13
13
 
14
14
  const THEME_APP_TYPE = {
15
15
  BASIC_APP: {
16
- description: 'basic extension(just an basic extension)',
16
+ description: 'Basic Extension(a card storekeeper decide where it add)',
17
17
  templatePath: path.resolve(__dirname, '../template/basic-app')
18
18
  },
19
19
  EMBEDS_APP: {
20
- description: 'embed extension(embed in a theme)',
20
+ description: 'Embed Extension(a card not need add)',
21
21
  templatePath: path.resolve(__dirname, '../template/embed-app')
22
22
  }
23
23
  };