Browse Source

feat(cli): open browser after editor started

master
Hans Chan 4 years ago
parent
commit
ba3f0ec18e
  1. 1
      .eslintrc.js
  2. 8
      packages/cli/package.json
  3. 9
      packages/cli/src/cmd/dev/index.js
  4. 4
      packages/cli/src/cmd/editor/index.js
  5. 1
      packages/cli/src/cmd/init/index.js
  6. 17
      packages/cli/src/utils/server/index.js

1
.eslintrc.js

@ -15,7 +15,6 @@ module.exports = {
} }
}, },
rules: { rules: {
'import/no-extraneous-dependencies': ['error', { peerDependencies: true }],
'prettier/prettier': 'error', 'prettier/prettier': 'error',
'react/jsx-filename-extension': ['warn', { extensions: ['.ts', '.tsx'] }], // 修复 tsx 文件引用 tsx 文件报错的问题 'react/jsx-filename-extension': ['warn', { extensions: ['.ts', '.tsx'] }], // 修复 tsx 文件引用 tsx 文件报错的问题
"no-var": 0,//禁用var,用let和const代替 "no-var": 0,//禁用var,用let和const代替

8
packages/cli/package.json

@ -11,8 +11,7 @@
"compile" "compile"
], ],
"scripts": { "scripts": {
"build:editor": "node src/cmd/editor/build.js", "build:editor": "node src/cmd/editor/build.js"
"postinstall": "npm run build:editor"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -22,7 +21,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@imove/compile-code": "^0.1.0", "@imove/compile-code": "^0.1.0",
"@imove/core": "^0.3.0", "@imove/core": "^0.3.9",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"commander": "^6.0.0", "commander": "^6.0.0",
"cors": "^2.8.5", "cors": "^2.8.5",
@ -31,6 +30,7 @@
"eventemitter3": "^4.0.7", "eventemitter3": "^4.0.7",
"express": "^4.17.1", "express": "^4.17.1",
"fs-extra": "^9.0.1", "fs-extra": "^9.0.1",
"lowdb": "^1.0.0" "lowdb": "^1.0.0",
"open": "^8.2.1"
} }
} }

9
packages/cli/src/cmd/dev/index.js

@ -1,11 +1,14 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path'); const path = require('path');
const fs = require('fs-extra'); const fs = require('fs-extra');
const Base = require('../base'); const Base = require('../base');
const mergePkg = require('./mergePkg'); const mergePkg = require('./mergePkg');
const { compileForProject } = require('@imove/compile-code'); const { compileForProject } = require('@imove/compile-code');
const { createServer } = require('../../utils/server'); const { DEFAULT_PORT, createServer } = require('../../utils/server');
const noop = () => {}; const noop = function () {
/* noop function */
};
const CACHE_PATH = path.join(process.cwd(), './.cache'); const CACHE_PATH = path.join(process.cwd(), './.cache');
const CACHE_DSL_FILE = path.join(CACHE_PATH, 'imove.dsl.json'); const CACHE_DSL_FILE = path.join(CACHE_PATH, 'imove.dsl.json');
@ -56,7 +59,7 @@ class Dev extends Base {
} }
run() { run() {
const app = createServer(); const app = createServer(DEFAULT_PORT);
app.post('/api/save', this.save.bind(this)); app.post('/api/save', this.save.bind(this));
app.get('/api/connect', this.connect.bind(this)); app.get('/api/connect', this.connect.bind(this));
} }

4
packages/cli/src/cmd/editor/index.js

@ -5,7 +5,7 @@ const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync'); const FileSync = require('lowdb/adapters/FileSync');
const express = require('express'); const express = require('express');
const Base = require('../base'); const Base = require('../base');
const { createServer } = require('../../utils/server'); const { DEFAULT_PORT, createServer } = require('../../utils/server');
class Editor extends Base { class Editor extends Base {
constructor(...args) { constructor(...args) {
@ -69,7 +69,7 @@ class Editor extends Base {
} }
run() { run() {
const server = createServer(); const server = createServer(DEFAULT_PORT, true);
server.use(express.static(path.join(__dirname, './template'))); server.use(express.static(path.join(__dirname, './template')));
server.post('/api/queryGraph', this.queryGraph.bind(this)); server.post('/api/queryGraph', this.queryGraph.bind(this));
server.post('/api/modifyGraph', this.modifyGraph.bind(this)); server.post('/api/modifyGraph', this.modifyGraph.bind(this));

1
packages/cli/src/cmd/init/index.js

@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path'); const path = require('path');
const fs = require('fs-extra'); const fs = require('fs-extra');
const Base = require('../base'); const Base = require('../base');

17
packages/cli/src/utils/server/index.js

@ -1,10 +1,21 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const express = require('express'); const express = require('express');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const open = require('open');
const DEFAULT_PORT = 3500;
const cachedServer = {}; const cachedServer = {};
const createServer = (port = 3500) => { function openBrowserIfNeeded(url, needOpen = false) {
if (needOpen) {
open(url);
}
}
const createServer = (port = DEFAULT_PORT, needOpen = false) => {
const url = `http://127.0.0.1:${port}`;
if (cachedServer[port]) { if (cachedServer[port]) {
openBrowserIfNeeded(url, needOpen);
return cachedServer[port]; return cachedServer[port];
} }
const app = express(); const app = express();
@ -21,11 +32,13 @@ const createServer = (port = 3500) => {
next(); next();
}); });
app.listen(port, () => { app.listen(port, () => {
console.log(`server starts successfully at ${port}!`); console.log(`server starts at ${url}`);
openBrowserIfNeeded(url, needOpen);
}); });
return app; return app;
}; };
module.exports = { module.exports = {
DEFAULT_PORT,
createServer, createServer,
}; };

Loading…
Cancel
Save