@nocobase/cli 0.11.1-alpha.5 → 0.12.0-alpha.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.
package/bin/index.js CHANGED
@@ -5,7 +5,6 @@ const { resolve } = require('path');
5
5
  const { existsSync } = require('fs');
6
6
 
7
7
  const env = {
8
- APP_PACKAGE_ROOT: 'app',
9
8
  APP_ENV: 'development',
10
9
  APP_KEY: 'test-jwt-secret',
11
10
  APP_PORT: 13000,
@@ -17,6 +16,7 @@ const env = {
17
16
  LOCAL_STORAGE_DEST: 'storage/uploads',
18
17
  MFSU_AD: 'none',
19
18
  PM2_HOME: resolve(process.cwd(), './storage/.pm2'),
19
+ PLUGIN_PACKAGE_PREFIX: '@nocobase/plugin-,@nocobase/plugin-sample-,@nocobase/preset-',
20
20
  };
21
21
 
22
22
  if (!process.env.APP_ENV_PATH && process.argv[2] && process.argv[2] === 'test') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/cli",
3
- "version": "0.11.1-alpha.5",
3
+ "version": "0.12.0-alpha.2",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./src/index.js",
@@ -8,6 +8,7 @@
8
8
  "nocobase": "./bin/index.js"
9
9
  },
10
10
  "dependencies": {
11
+ "@nocobase/app": "0.12.0-alpha.2",
11
12
  "@types/fs-extra": "^11.0.1",
12
13
  "@umijs/utils": "3.5.20",
13
14
  "chalk": "^4.1.1",
@@ -22,12 +23,12 @@
22
23
  "tsx": "^3.12.7"
23
24
  },
24
25
  "devDependencies": {
25
- "@nocobase/devtools": "0.11.1-alpha.5"
26
+ "@nocobase/devtools": "0.12.0-alpha.2"
26
27
  },
27
28
  "repository": {
28
29
  "type": "git",
29
30
  "url": "git+https://github.com/nocobase/nocobase.git",
30
31
  "directory": "packages/core/cli"
31
32
  },
32
- "gitHead": "1dcfd15a7d95a40b0a2f60e1de19ec574066fb20"
33
+ "gitHead": "a95e9e2666f0318c955113a4735bc005a2c9a767"
33
34
  }
@@ -1,6 +1,6 @@
1
- const { resolve } = require('path');
1
+ const { resolve, dirname } = require('path');
2
2
  const { Command } = require('commander');
3
- const { run, nodeCheck, isPackageValid, promptForTs } = require('../util');
3
+ const { run, nodeCheck, isPackageValid, promptForTs, hasCorePackages } = require('../util');
4
4
 
5
5
  /**
6
6
  *
@@ -8,7 +8,7 @@ const { run, nodeCheck, isPackageValid, promptForTs } = require('../util');
8
8
  */
9
9
  module.exports = (cli) => {
10
10
  const { APP_PACKAGE_ROOT } = process.env;
11
- const clientPackage = `${APP_PACKAGE_ROOT}/client`;
11
+ const clientPackage = `core/app`;
12
12
  cli
13
13
  .command('build')
14
14
  .allowUnknownOption()
@@ -24,13 +24,16 @@ module.exports = (cli) => {
24
24
  });
25
25
  }
26
26
  }
27
- if (!pkgs.length || !pkgs.includes(clientPackage) || (pkgs.includes(clientPackage) && pkgs.length > 1)) {
28
- await run('nocobase-build', process.argv.slice(3));
27
+ await run('nocobase-build', process.argv.slice(3));
28
+ if (!hasCorePackages()) {
29
+ return;
29
30
  }
30
31
  if (!pkgs.length || pkgs.includes(clientPackage)) {
32
+ const file = require.resolve('@nocobase/app');
31
33
  await run('umi', ['build'], {
32
34
  env: {
33
- APP_ROOT: `packages/${APP_PACKAGE_ROOT}/client`,
35
+ APP_ROOT: `${dirname(dirname(file))}/client`,
36
+ NODE_ENV: 'production',
34
37
  },
35
38
  });
36
39
  }
@@ -14,6 +14,7 @@ module.exports = (cli) => {
14
14
  if (!isDev()) {
15
15
  return;
16
16
  }
17
+ run('rimraf', ['-rf', './storage/app-dev']);
17
18
  run('rimraf', ['-rf', './**/{.umi,.umi-production}']);
18
19
  run('rimraf', ['-rf', 'packages/*/*/{lib,esm,es,dist,node_modules}']);
19
20
  });
@@ -25,7 +25,7 @@ module.exports = (cli) => {
25
25
  './tsconfig.server.json',
26
26
  '-r',
27
27
  'tsconfig-paths/register',
28
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
28
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
29
29
  ...process.argv.slice(2),
30
30
  ]);
31
31
  return;
@@ -65,7 +65,7 @@ module.exports = (cli) => {
65
65
  './tsconfig.server.json',
66
66
  '-r',
67
67
  'tsconfig-paths/register',
68
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
68
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
69
69
  'start',
70
70
  ...process.argv.slice(3),
71
71
  `--port=${serverPort}`,
@@ -98,7 +98,7 @@ module.exports = (cli) => {
98
98
  run('umi', ['dev'], {
99
99
  env: {
100
100
  PORT: clientPort,
101
- APP_ROOT: `packages/${APP_PACKAGE_ROOT}/client`,
101
+ APP_ROOT: `${APP_PACKAGE_ROOT}/client`,
102
102
  PROXY_TARGET_URL:
103
103
  process.env.PROXY_TARGET_URL || (serverPort ? `http://127.0.0.1:${serverPort}` : undefined),
104
104
  },
@@ -20,11 +20,11 @@ module.exports = (cli) => {
20
20
  './tsconfig.server.json',
21
21
  '-r',
22
22
  'tsconfig-paths/register',
23
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
23
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
24
24
  ...process.argv.slice(2),
25
25
  ]);
26
26
  } else if (isProd()) {
27
- run('node', [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, ...process.argv.slice(2)]);
27
+ run('node', [`${APP_PACKAGE_ROOT}/lib/index.js`, ...process.argv.slice(2)]);
28
28
  }
29
29
  });
30
30
  };
@@ -1,11 +1,12 @@
1
1
  const { Command } = require('commander');
2
- const { isPackageValid } = require('../util');
2
+ const { isPackageValid, generateAppDir } = require('../util');
3
3
 
4
4
  /**
5
5
  *
6
6
  * @param {Command} cli
7
7
  */
8
8
  module.exports = (cli) => {
9
+ generateAppDir();
9
10
  require('./global')(cli);
10
11
  require('./build')(cli);
11
12
  require('./dev')(cli);
@@ -31,7 +31,7 @@ module.exports = (cli) => {
31
31
  run('umi', ['generate', 'tmp'], {
32
32
  stdio: 'pipe',
33
33
  env: {
34
- APP_ROOT: `packages/${APP_PACKAGE_ROOT}/client`,
34
+ APP_ROOT: `${APP_PACKAGE_ROOT}/client`,
35
35
  },
36
36
  });
37
37
  });
@@ -28,12 +28,12 @@ module.exports = (cli) => {
28
28
  './tsconfig.server.json',
29
29
  '-r',
30
30
  'tsconfig-paths/register',
31
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
31
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
32
32
  ...process.argv.slice(2),
33
33
  ]);
34
34
  return;
35
35
  }
36
- if (!existsSync(resolve(process.cwd(), `./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`))) {
36
+ if (!existsSync(resolve(process.cwd(), `${APP_PACKAGE_ROOT}/lib/index.js`))) {
37
37
  console.log('The code is not compiled, please execute it first');
38
38
  console.log(chalk.yellow('$ yarn build'));
39
39
  console.log('If you want to run in development mode, please execute');
@@ -44,21 +44,21 @@ module.exports = (cli) => {
44
44
  const restartMark = resolve(process.cwd(), 'storage', 'restart');
45
45
  if (!existsSync(restartMark)) {
46
46
  if (opts.quickstart) {
47
- await run('node', [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, 'install', '--ignore-installed']);
48
- await run('node', [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, 'upgrade']);
47
+ await run('node', [`${APP_PACKAGE_ROOT}/lib/index.js`, 'install', '--ignore-installed']);
48
+ await run('node', [`${APP_PACKAGE_ROOT}/lib/index.js`, 'upgrade']);
49
49
  }
50
50
  if (opts.dbSync) {
51
- await run('node', [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, 'db:sync']);
51
+ await run('node', [`${APP_PACKAGE_ROOT}/lib/index.js`, 'db:sync']);
52
52
  }
53
53
  }
54
54
  if (opts.daemon) {
55
- run('pm2', ['start', `packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, '--', ...process.argv.slice(2)]);
55
+ run('pm2', ['start', `${APP_PACKAGE_ROOT}/lib/index.js`, '--', ...process.argv.slice(2)]);
56
56
  } else {
57
57
  run(
58
58
  'pm2-runtime',
59
59
  [
60
60
  'start',
61
- `packages/${APP_PACKAGE_ROOT}/server/lib/index.js`,
61
+ `${APP_PACKAGE_ROOT}/lib/index.js`,
62
62
  NODE_ARGS ? `--node-args="${NODE_ARGS}"` : undefined,
63
63
  '--',
64
64
  ...process.argv.slice(2),
@@ -17,7 +17,7 @@ module.exports = (cli) => {
17
17
  }
18
18
  run('umi', process.argv.slice(3), {
19
19
  env: {
20
- APP_ROOT: `packages/${APP_PACKAGE_ROOT}/client`,
20
+ APP_ROOT: `${APP_PACKAGE_ROOT}/client`,
21
21
  },
22
22
  });
23
23
  });
@@ -1,7 +1,8 @@
1
1
  const chalk = require('chalk');
2
2
  const { Command } = require('commander');
3
3
  const { resolve } = require('path');
4
- const { getVersion, run, promptForTs, runAppCommand, hasCorePackages, updateJsonFile, hasTsNode } = require('../util');
4
+ const { run, promptForTs, runAppCommand, hasCorePackages, updateJsonFile, hasTsNode } = require('../util');
5
+ const { existsSync, rmSync } = require('fs');
5
6
 
6
7
  /**
7
8
  *
@@ -25,25 +26,18 @@ module.exports = (cli) => {
25
26
  await runAppCommand('upgrade');
26
27
  return;
27
28
  }
28
- await runAppCommand('upgrade');
29
- // If ts-node is not installed, do not do the following
29
+ // await runAppCommand('upgrade');
30
30
  if (!hasTsNode()) {
31
+ await runAppCommand('upgrade');
31
32
  return;
32
33
  }
33
- const version = await getVersion();
34
+ // If ts-node is not installed, do not do the following
35
+ const appDevDir = resolve(process.cwd(), './storage/.app-dev');
36
+ if (existsSync(appDevDir)) {
37
+ rmSync(appDevDir, { recursive: true, force: true });
38
+ }
34
39
  await run('yarn', ['add', '@nocobase/cli', '@nocobase/devtools', '-W']);
35
- const clientPackage = resolve(process.cwd(), `packages/${APP_PACKAGE_ROOT}/client/package.json`);
36
- const serverPackage = resolve(process.cwd(), `packages/${APP_PACKAGE_ROOT}/server/package.json`);
37
- await updateJsonFile(clientPackage, (data) => {
38
- data.devDependencies['@nocobase/client'] = version;
39
- return data;
40
- });
41
- await updateJsonFile(serverPackage, (data) => {
42
- data.dependencies['@nocobase/preset-nocobase'] = version;
43
- return data;
44
- });
45
40
  await run('yarn', ['install']);
46
- await run('nocobase', ['build']);
47
41
  await runAppCommand('upgrade');
48
42
  });
49
43
  };
package/src/util.js CHANGED
@@ -1,9 +1,9 @@
1
1
  const net = require('net');
2
2
  const chalk = require('chalk');
3
3
  const execa = require('execa');
4
- const { resolve } = require('path');
4
+ const { dirname, resolve } = require('path');
5
5
  const { readFile, writeFile } = require('fs').promises;
6
- const { existsSync } = require('fs');
6
+ const { existsSync, mkdirSync, cpSync } = require('fs');
7
7
 
8
8
  exports.isPackageValid = (package) => {
9
9
  try {
@@ -32,7 +32,7 @@ exports.isDev = function isDev() {
32
32
 
33
33
  const isProd = () => {
34
34
  const { APP_PACKAGE_ROOT } = process.env;
35
- const file = `./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`;
35
+ const file = `${APP_PACKAGE_ROOT}/lib/index.js`;
36
36
  if (!existsSync(resolve(process.cwd(), file))) {
37
37
  console.log('For production environment, please build the code first.');
38
38
  console.log();
@@ -110,13 +110,13 @@ exports.runInstall = async () => {
110
110
  './tsconfig.server.json',
111
111
  '-r',
112
112
  'tsconfig-paths/register',
113
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
113
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
114
114
  'install',
115
115
  '-s',
116
116
  ];
117
117
  await exports.run('tsx', argv);
118
118
  } else if (isProd()) {
119
- const file = `./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`;
119
+ const file = `${APP_PACKAGE_ROOT}/lib/index.js`;
120
120
  const argv = [file, 'install', '-s'];
121
121
  await exports.run('node', argv);
122
122
  }
@@ -131,13 +131,13 @@ exports.runAppCommand = async (command, args = []) => {
131
131
  './tsconfig.server.json',
132
132
  '-r',
133
133
  'tsconfig-paths/register',
134
- `./packages/${APP_PACKAGE_ROOT}/server/src/index.ts`,
134
+ `${APP_PACKAGE_ROOT}/src/index.ts`,
135
135
  command,
136
136
  ...args,
137
137
  ];
138
138
  await exports.run('tsx', argv);
139
139
  } else if (isProd()) {
140
- const argv = [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, command, ...args];
140
+ const argv = [`${APP_PACKAGE_ROOT}/lib/index.js`, command, ...args];
141
141
  await exports.run('node', argv);
142
142
  }
143
143
  };
@@ -157,3 +157,20 @@ exports.getVersion = async () => {
157
157
  const versions = new Function(`return (${stdout})`)();
158
158
  return versions[versions.length - 1];
159
159
  };
160
+
161
+ exports.generateAppDir = function generateAppDir() {
162
+ const appPkgPath = dirname(dirname(require.resolve('@nocobase/app/src/index.ts')));
163
+ const appDevDir = resolve(process.cwd(), './storage/.app-dev');
164
+ if (exports.isDev() && !exports.hasCorePackages() && appPkgPath.includes('node_modules')) {
165
+ if (!existsSync(appDevDir)) {
166
+ mkdirSync(appDevDir, { force: true, recursive: true });
167
+ cpSync(appPkgPath, appDevDir, {
168
+ recursive: true,
169
+ force: true,
170
+ });
171
+ }
172
+ process.env.APP_PACKAGE_ROOT = appDevDir;
173
+ } else {
174
+ process.env.APP_PACKAGE_ROOT = appPkgPath;
175
+ }
176
+ };
@@ -0,0 +1,2 @@
1
+ /node_modules
2
+ /src
@@ -1,3 +1,2 @@
1
- export * from './src/client';
2
- export { default } from './src/client';
3
-
1
+ export * from './dist/client';
2
+ export { default } from './dist/client';
@@ -1 +1 @@
1
- module.exports = require('./lib/client/index.js');
1
+ module.exports = require('./dist/client/index.js');
@@ -1,20 +1,11 @@
1
1
  {
2
2
  "name": "{{{packageName}}}",
3
3
  "version": "{{{packageVersion}}}",
4
- "main": "lib/server/index.js",
5
- "files": [
6
- "lib",
7
- "src",
8
- "README.md",
9
- "README.zh-CN.md",
10
- "CHANGELOG.md",
11
- "server.js",
12
- "server.d.ts",
13
- "client.js",
14
- "client.d.ts"
15
- ],
16
- "devDependencies": {
17
- "@nocobase/server": "{{{nocobaseVersion}}}",
18
- "@nocobase/test": "{{{nocobaseVersion}}}"
4
+ "main": "dist/server/index.js",
5
+ "dependencies": {},
6
+ "peerDependencies": {
7
+ "@nocobase/client": "0.x",
8
+ "@nocobase/server": "0.x",
9
+ "@nocobase/test": "0.x"
19
10
  }
20
11
  }
@@ -1,3 +1,2 @@
1
- export * from './src/server';
2
- export { default } from './src/server';
3
-
1
+ export * from './dist/server';
2
+ export { default } from './dist/server';
@@ -1 +1 @@
1
- module.exports = require('./lib/server/index.js');
1
+ module.exports = require('./dist/server/index.js');
@@ -2,7 +2,7 @@ import { Plugin } from '@nocobase/client';
2
2
 
3
3
  export class {{{pascalCaseName}}}Plugin extends Plugin {
4
4
  async afterAdd() {
5
- // this.app.pm.add()
5
+ // await this.app.pm.add()
6
6
  }
7
7
 
8
8
  async beforeLoad() {}
@@ -1 +1,2 @@
1
+ export * from './server';
1
2
  export { default } from './server';