Browse Source
Merge pull request #116 from csbun/feature/cli-with-editor
open browser after cli editor started
master
Yang Pei
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with
46 additions and
18 deletions
-
.eslintrc.js
-
.gitignore
-
package.json
-
packages/cli/package.json
-
packages/cli/src/cmd/dev/index.js
-
packages/cli/src/cmd/editor/build.js
-
packages/cli/src/cmd/editor/index.js
-
packages/cli/src/cmd/init/index.js
-
packages/cli/src/utils/server/index.js
|
|
@ -15,7 +15,6 @@ module.exports = { |
|
|
|
} |
|
|
|
}, |
|
|
|
rules: { |
|
|
|
'import/no-extraneous-dependencies': ['error', { peerDependencies: true }], |
|
|
|
'prettier/prettier': 'error', |
|
|
|
'react/jsx-filename-extension': ['warn', { extensions: ['.ts', '.tsx'] }], // 修复 tsx 文件引用 tsx 文件报错的问题
|
|
|
|
"no-var": 0,//禁用var,用let和const代替
|
|
|
|
|
|
@ -2,6 +2,7 @@ |
|
|
|
.vscode |
|
|
|
.eslintcache |
|
|
|
.size-snapshot.json |
|
|
|
.husky |
|
|
|
npm-debug.log* |
|
|
|
yarn-error.log* |
|
|
|
lerna-debug.log |
|
|
|
|
|
@ -2,17 +2,14 @@ |
|
|
|
"name": "root", |
|
|
|
"private": true, |
|
|
|
"scripts": { |
|
|
|
"lint": "eslint --cache --fix --ext .ts,tsx,js,jsx ./packages/**/src > ./.eslint-error.log; exit 0", |
|
|
|
"test": "jest --coverage", |
|
|
|
"e2e": "cypress open", |
|
|
|
"doc": "dumi dev", |
|
|
|
"start": "concurrently \"lerna run watch --parallel\" \"cross-env APP_ROOT=example umi dev\"", |
|
|
|
"example": "concurrently \"lerna run watch --parallel\" \"cross-env APP_ROOT=example umi dev\" \"imove -d\"", |
|
|
|
"postinstall": "lerna init && lerna bootstrap && npm link packages/cli" |
|
|
|
"postinstall": "lerna init && lerna bootstrap && npm link packages/cli", |
|
|
|
"prepare": "husky install" |
|
|
|
}, |
|
|
|
"pre-commit": [ |
|
|
|
"lint" |
|
|
|
], |
|
|
|
"jest": { |
|
|
|
"projects": [ |
|
|
|
"config/cli.jest.config.js", |
|
|
@ -37,12 +34,13 @@ |
|
|
|
"eslint-config-prettier": "^7.2.0", |
|
|
|
"eslint-plugin-prettier": "^3.3.1", |
|
|
|
"eslint-plugin-react": "^7.22.0", |
|
|
|
"husky": "^7.0.1", |
|
|
|
"lerna": "^3.22.1", |
|
|
|
"less": "^3.12.2", |
|
|
|
"lint-staged": "^11.0.1", |
|
|
|
"lowdb": "^1.0.0", |
|
|
|
"ora": "^4.1.1", |
|
|
|
"postcss": "^8.2.1", |
|
|
|
"pre-commit": "^1.2.2", |
|
|
|
"prettier": "^2.2.1", |
|
|
|
"rollup": "^2.6.1", |
|
|
|
"rollup-plugin-postcss": "^4.0.0", |
|
|
@ -53,5 +51,8 @@ |
|
|
|
"typescript": "^4.1.3", |
|
|
|
"umi": "^3.3.3", |
|
|
|
"watch": "^1.0.2" |
|
|
|
}, |
|
|
|
"lint-staged": { |
|
|
|
"packages/**/*.{ts,tsx,js,jsx}": "eslint --cache --fix" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
@ -12,7 +12,7 @@ |
|
|
|
], |
|
|
|
"scripts": { |
|
|
|
"build:editor": "node src/cmd/editor/build.js", |
|
|
|
"postinstall": "npm run build:editor" |
|
|
|
"prepare": "npm run build:editor" |
|
|
|
}, |
|
|
|
"repository": { |
|
|
|
"type": "git", |
|
|
@ -22,7 +22,7 @@ |
|
|
|
"license": "MIT", |
|
|
|
"dependencies": { |
|
|
|
"@imove/compile-code": "^0.1.0", |
|
|
|
"@imove/core": "^0.3.0", |
|
|
|
"@imove/core": "^0.3.9", |
|
|
|
"body-parser": "^1.19.0", |
|
|
|
"commander": "^6.0.0", |
|
|
|
"cors": "^2.8.5", |
|
|
@ -31,6 +31,7 @@ |
|
|
|
"eventemitter3": "^4.0.7", |
|
|
|
"express": "^4.17.1", |
|
|
|
"fs-extra": "^9.0.1", |
|
|
|
"lowdb": "^1.0.0" |
|
|
|
"lowdb": "^1.0.0", |
|
|
|
"open": "^8.2.1" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
@ -1,11 +1,14 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-var-requires */ |
|
|
|
const path = require('path'); |
|
|
|
const fs = require('fs-extra'); |
|
|
|
const Base = require('../base'); |
|
|
|
const mergePkg = require('./mergePkg'); |
|
|
|
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_DSL_FILE = path.join(CACHE_PATH, 'imove.dsl.json'); |
|
|
|
|
|
|
@ -56,7 +59,7 @@ class Dev extends Base { |
|
|
|
} |
|
|
|
|
|
|
|
run() { |
|
|
|
const app = createServer(); |
|
|
|
const app = createServer(DEFAULT_PORT); |
|
|
|
app.post('/api/save', this.save.bind(this)); |
|
|
|
app.get('/api/connect', this.connect.bind(this)); |
|
|
|
} |
|
|
|
|
|
@ -1,12 +1,21 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-var-requires */ |
|
|
|
const path = require('path'); |
|
|
|
const fs = require('fs-extra'); |
|
|
|
const { lessLoader } = require('esbuild-plugin-less'); |
|
|
|
|
|
|
|
const outfile = path.join(__dirname, 'template/dist/app.bundle.js'); |
|
|
|
|
|
|
|
// if builded and NOT force re-build, exit
|
|
|
|
if (fs.existsSync(outfile) && process.argv.indexOf('--force') < 0) { |
|
|
|
console.log('imove editor alredy builded'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
require('esbuild') |
|
|
|
.build({ |
|
|
|
bundle: true, |
|
|
|
entryPoints: [path.join(__dirname, 'template/app.jsx')], |
|
|
|
outfile: path.join(__dirname, 'template/dist/app.bundle.js'), |
|
|
|
outfile, |
|
|
|
plugins: [ |
|
|
|
// fix import('antd/dist/antd.less')
|
|
|
|
{ |
|
|
|
|
|
@ -5,7 +5,7 @@ const low = require('lowdb'); |
|
|
|
const FileSync = require('lowdb/adapters/FileSync'); |
|
|
|
const express = require('express'); |
|
|
|
const Base = require('../base'); |
|
|
|
const { createServer } = require('../../utils/server'); |
|
|
|
const { DEFAULT_PORT, createServer } = require('../../utils/server'); |
|
|
|
|
|
|
|
class Editor extends Base { |
|
|
|
constructor(...args) { |
|
|
@ -69,7 +69,7 @@ class Editor extends Base { |
|
|
|
} |
|
|
|
|
|
|
|
run() { |
|
|
|
const server = createServer(); |
|
|
|
const server = createServer(DEFAULT_PORT, true); |
|
|
|
server.use(express.static(path.join(__dirname, './template'))); |
|
|
|
server.post('/api/queryGraph', this.queryGraph.bind(this)); |
|
|
|
server.post('/api/modifyGraph', this.modifyGraph.bind(this)); |
|
|
|
|
|
@ -1,3 +1,4 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-var-requires */ |
|
|
|
const path = require('path'); |
|
|
|
const fs = require('fs-extra'); |
|
|
|
const Base = require('../base'); |
|
|
|
|
|
@ -1,10 +1,21 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-var-requires */ |
|
|
|
const express = require('express'); |
|
|
|
const bodyParser = require('body-parser'); |
|
|
|
const open = require('open'); |
|
|
|
|
|
|
|
const DEFAULT_PORT = 3500; |
|
|
|
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]) { |
|
|
|
openBrowserIfNeeded(url, needOpen); |
|
|
|
return cachedServer[port]; |
|
|
|
} |
|
|
|
const app = express(); |
|
|
@ -21,11 +32,13 @@ const createServer = (port = 3500) => { |
|
|
|
next(); |
|
|
|
}); |
|
|
|
app.listen(port, () => { |
|
|
|
console.log(`server starts successfully at ${port}!`); |
|
|
|
console.log(`server starts at ${url}`); |
|
|
|
openBrowserIfNeeded(url, needOpen); |
|
|
|
}); |
|
|
|
return app; |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports = { |
|
|
|
DEFAULT_PORT, |
|
|
|
createServer, |
|
|
|
}; |
|
|
|