Browse Source

feat: extract dependencies from nodes and merge them into package.json in the project

master
smallstonesk 5 years ago
parent
commit
d1883a35a2
  1. 3
      packages/cli/src/cmd/dev/index.js
  2. 34
      packages/cli/src/cmd/dev/mergePkg.js

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

@ -1,9 +1,11 @@
const path = require('path');
const fs = require('fs-extra');
const mergePkg = require('./mergePkg');
const simplifyDSL = require('./simplifyDSL');
const extractCodes = require('./extractCodes');
const {createServer} = require('../../utils/server');
const PROJECT_ROOT_PATH = process.cwd();
const TPL_PATH = path.join(__dirname, './template');
const LOGIC_BASE_PATH = path.join(process.cwd(), './src/logic');
@ -20,6 +22,7 @@ const setup = () => {
// compile
try {
const {dsl} = req.body;
await mergePkg(dsl, PROJECT_ROOT_PATH);
await simplifyDSL(dsl, LOGIC_BASE_PATH);
await extractCodes(dsl, LOGIC_BASE_PATH);
await fs.copy(TPL_PATH, LOGIC_BASE_PATH);

34
packages/cli/src/cmd/dev/mergePkg.js

@ -0,0 +1,34 @@
const path = require('path');
const fs = require('fs-extra');
const extractDep = (dsl) => {
const mergedDependencies = {};
const {cells = []} = dsl;
cells.filter(cell => cell.shape !== 'edge').forEach(cell => {
const {dependencies} = cell.data || {};
try {
const json = JSON.parse(dependencies);
Object.keys(json).forEach(key => mergedDependencies[key] = json[key]);
} catch(err) {
console.log('extract dependencies failed, the error is:', err.message);
}
});
return mergedDependencies;
}
const setup = async (dsl, projectRootPath) => {
const pkgPath = path.join(projectRootPath, './package.json');
const pkgFile = await fs.readFile(pkgPath);
const pkgJson = JSON.parse(pkgFile);
const dslDependencies = extractDep(dsl);
if(!pkgJson.dependencies) {
pkgJson.dependencies = dslDependencies;
} else {
Object.keys(dslDependencies).forEach(key => {
pkgJson.dependencies[key] = dslDependencies[key];
});
}
await fs.writeFile(pkgPath, JSON.stringify(pkgJson, null, 2));
};
module.exports = setup;
Loading…
Cancel
Save