move files from main project
This commit is contained in:
53
scripts/command.js
Normal file
53
scripts/command.js
Normal file
@@ -0,0 +1,53 @@
|
||||
require('shelljs/global')
|
||||
const fs = require("fs")
|
||||
const path = require("path")
|
||||
const SourceMapMerger = require("source-map-merger");
|
||||
|
||||
function fromDir(startPath, filter) {
|
||||
if (!fs.existsSync(startPath)) {
|
||||
console.log("no dir ", startPath);
|
||||
return;
|
||||
}
|
||||
|
||||
const files = fs.readdirSync(startPath);
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
const filename = path.join(startPath, files[i]);
|
||||
const stat = fs.lstatSync(filename);
|
||||
if (stat.isDirectory()) {
|
||||
fromDir(filename, filter);
|
||||
}
|
||||
else if (filename.indexOf(filter) >= 0) {
|
||||
try {
|
||||
doMerge(startPath, files[i])
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
};
|
||||
};
|
||||
};
|
||||
function doMerge(startPath, fileName) {
|
||||
const filePath = fileName ? path.join(startPath, fileName) : startPath
|
||||
const mergedMap = SourceMapMerger.createMergedSourceMapFromFiles([
|
||||
filePath.replace(/bundle\//, 'build/'),
|
||||
filePath,
|
||||
], true);
|
||||
fs.writeFileSync(filePath, mergedMap)
|
||||
return mergedMap
|
||||
}
|
||||
function mergeMappings() {
|
||||
fromDir("bundle", ".map")
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
build: () => {
|
||||
exec('npm run build')
|
||||
console.log('Deal mapping')
|
||||
mergeMappings()
|
||||
},
|
||||
clean: () => {
|
||||
exec('npm run clean')
|
||||
},
|
||||
mergeMappings,
|
||||
doMerge,
|
||||
}
|
||||
|
28
scripts/init.js
Normal file
28
scripts/init.js
Normal file
@@ -0,0 +1,28 @@
|
||||
var fs = require('fs');
|
||||
require('shelljs/global')
|
||||
|
||||
module.exports = function (name) {
|
||||
if (fs.existsSync(name)) {
|
||||
console.warn(`Dir:${process.cwd()}/${name} already exists`)
|
||||
return;
|
||||
}
|
||||
fs.mkdir(name, function (err) {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
console.log(`create dir ${name} success`);
|
||||
fs.writeFileSync(`${name}/package.json`, fs.readFileSync(`${__dirname}/../contents/_package.json`).toString().replace(/__\$__/g, name))
|
||||
fs.writeFileSync(`${name}/tsconfig.json`, fs.readFileSync(`${__dirname}/../contents/_tsconfig.json`))
|
||||
fs.writeFileSync(`${name}/rollup.config.js`, fs.readFileSync(`${__dirname}/../contents/_rollup.config.js`))
|
||||
fs.writeFileSync(`${name}/.gitignore`, fs.readFileSync(`${__dirname}/../contents/_gitignore`))
|
||||
fs.mkdirSync(`${name}/.vscode`)
|
||||
fs.writeFileSync(`${name}/.vscode/launch.json`, fs.readFileSync(`${__dirname}/../contents/_launch.json`).toString().replace(/__\$__/g, name))
|
||||
fs.writeFileSync(`${name}/.vscode/tasks.json`, fs.readFileSync(`${__dirname}/../contents/_tasks.json`).toString().replace(/__\$__/g, name))
|
||||
fs.mkdirSync(`${name}/src`)
|
||||
fs.writeFileSync(`${name}/src/${name}.ts`, fs.readFileSync(`${__dirname}/../contents/$.ts`).toString().replace(/__\$__/g, name))
|
||||
fs.writeFileSync(`${name}/index.ts`, `export default ['src/${name}']`)
|
||||
exec(`cd ${name} && npm install && npm run build`, () => {
|
||||
console.log(`Create Doric Project ${name} Success`)
|
||||
})
|
||||
})
|
||||
}
|
65
scripts/server.js
Normal file
65
scripts/server.js
Normal file
@@ -0,0 +1,65 @@
|
||||
const ws = require('nodejs-websocket')
|
||||
const { exec, spawn } = require('child_process')
|
||||
const fs = require('fs')
|
||||
|
||||
var clientConnection = null
|
||||
var debuggerConnection = null
|
||||
|
||||
const createServer = () => {
|
||||
let server = ws.createServer(connection => {
|
||||
console.log('connected', connection.headers.host)
|
||||
|
||||
if (connection.headers.host.startsWith("localhost")) {
|
||||
console.log("debugger " + connection.key + " attached to dev kit")
|
||||
debuggerConnection = connection
|
||||
|
||||
clientConnection.sendText(JSON.stringify({
|
||||
cmd: 'SWITCH_TO_DEBUG'
|
||||
}), function() {
|
||||
|
||||
})
|
||||
} else {
|
||||
console.log("client " + connection.key + " attached to dev kit")
|
||||
}
|
||||
|
||||
connection.on('text', function (result) {
|
||||
console.log('text', result)
|
||||
let resultObject = JSON.parse(result)
|
||||
switch(resultObject.cmd) {
|
||||
case 'DEBUG':
|
||||
clientConnection = connection
|
||||
|
||||
let contextId = resultObject.data.contextId
|
||||
let projectHome = resultObject.data.projectHome
|
||||
|
||||
fs.writeFileSync(projectHome + '/build/context', contextId, 'utf8')
|
||||
|
||||
let source = resultObject.data.source
|
||||
console.log(connection.key + " request debug, project home: " + projectHome)
|
||||
|
||||
spawn('code', [projectHome, projectHome + "/src/" + source])
|
||||
setTimeout(() => {
|
||||
exec('osascript -e \'tell application "System Events"\ntell application "Visual Studio Code" to activate\nkey code 96\nend tell\'', (err, stdout, stderr) => {
|
||||
if (err) {
|
||||
console.log(`stdout: ${err}`)
|
||||
}
|
||||
})
|
||||
}, 3000)
|
||||
|
||||
break
|
||||
}
|
||||
})
|
||||
connection.on('connect', function (code) {
|
||||
console.log('connect', code)
|
||||
})
|
||||
connection.on('close', function (code) {
|
||||
console.log('close: code = ' + code, connection.key)
|
||||
})
|
||||
connection.on('error', function (code) {
|
||||
console.log('error', code)
|
||||
})
|
||||
})
|
||||
return server
|
||||
}
|
||||
|
||||
module.exports = createServer()
|
78
scripts/watcher.js
Normal file
78
scripts/watcher.js
Normal file
@@ -0,0 +1,78 @@
|
||||
const chokidar = require('chokidar')
|
||||
const ws = require('./server')
|
||||
const fs = require("fs")
|
||||
const doMerge = require("./command").doMerge
|
||||
|
||||
require('shelljs/global')
|
||||
|
||||
exec('npm run dev >/dev/null 2>&1', { async: true })
|
||||
console.warn('Waiting ...')
|
||||
setTimeout(() => {
|
||||
console.warn('Start watching')
|
||||
ws.listen(7777)
|
||||
chokidar.watch(process.cwd() + "/bundle", {
|
||||
ignored: /(^|[\/\\])\../,
|
||||
}).on('change', (path) => {
|
||||
fs.readFile(path, 'utf-8', (error, data) => {
|
||||
if (!path.endsWith('.map')) {
|
||||
console.log('File change:', path)
|
||||
try {
|
||||
const sourceMap = doMerge(path + ".map")
|
||||
ws.connections.forEach(e => {
|
||||
e.sendText(JSON.stringify({
|
||||
cmd: 'RELOAD',
|
||||
script: data,
|
||||
source: path.match(/[^/\\]*$/)[0],
|
||||
sourceMap,
|
||||
}))
|
||||
})
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}, 3000);
|
||||
const os = require('os');
|
||||
|
||||
function getIPAdress() {
|
||||
const ret = []
|
||||
var interfaces = os.networkInterfaces();
|
||||
for (var devName in interfaces) {
|
||||
var iface = interfaces[devName];
|
||||
for (var i = 0; i < iface.length; i++) {
|
||||
var alias = iface[i];
|
||||
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
|
||||
ret.push(alias.address);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
|
||||
const qrcode = require('qrcode-terminal');
|
||||
|
||||
const ips = getIPAdress()
|
||||
ips.forEach(e => {
|
||||
console.log(`IP:${e}`)
|
||||
qrcode.generate(e, { small: false });
|
||||
})
|
||||
|
||||
const keypress = require('keypress');
|
||||
|
||||
keypress(process.stdin);
|
||||
process.stdin.on('keypress', function (ch, key) {
|
||||
if (key && key.ctrl && key.name == 'r') {
|
||||
ips.forEach(e => {
|
||||
console.log(`IP:${e}`)
|
||||
qrcode.generate(e, { small: false });
|
||||
})
|
||||
}
|
||||
if (key && key.ctrl && key.name == 'c') {
|
||||
process.stdin.pause();
|
||||
process.exit(0);
|
||||
}
|
||||
});
|
||||
process.stdin.setRawMode(true);
|
||||
process.stdin.resume();
|
Reference in New Issue
Block a user