diff --git a/out/src/extension.js b/out/src/extension.js
new file mode 100644
index 0000000..846428b
--- /dev/null
+++ b/out/src/extension.js
@@ -0,0 +1,38 @@
+'use strict';
+// The module 'vscode' contains the VS Code extensibility API
+// Import the module and reference it with the alias vscode in your code below
+var vscode = require('vscode');
+var child_process = require('child_process');
+// this method is called when your extension is activated
+// your extension is activated the very first time the command is executed
+function activate(context) {
+    // Use the console to output diagnostic information (console.log) and errors (console.error)
+    // This line of code will only be executed once when your extension is activated
+    console.log('Congratulations, your extension "previewtest-ts" is now active!');
+    var spawn = child_process.spawn('E:\\Docfx\\test\\extensionTest\\previewTest\\child.exe');
+    // The command has been defined in the package.json file
+    // Now provide the implementation of the command with  registerCommand
+    // The commandId parameter must match the command field in package.json
+    var disposable = vscode.commands.registerCommand('extension.sayHello', function () {
+        // The code you place here will be executed every time your command is executed
+        spawn.stdin.write("t-jipe\n");
+        // Display a message box to the user
+        vscode.window.showInformationMessage('Hello World!');
+    });
+    spawn.stdout.on('data', function (data) {
+        console.log("result " + data + '\n');
+    });
+    spawn.stderr.on('data', function (data) {
+        console.log("error " + data + '\n');
+    });
+    spawn.on('exit', function (code) {
+        console.log('child process exit with code ' + code);
+    });
+    context.subscriptions.push(disposable);
+}
+exports.activate = activate;
+// this method is called when your extension is deactivated
+function deactivate() {
+}
+exports.deactivate = deactivate;
+//# sourceMappingURL=extension.js.map
\ No newline at end of file
diff --git a/out/src/extension.js.map b/out/src/extension.js.map
new file mode 100644
index 0000000..6bd7689
--- /dev/null
+++ b/out/src/extension.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,6DAA6D;AAC7D,8EAA8E;AAC9E,IAAY,MAAM,WAAM,QAAQ,CAAC,CAAA;AACjC,IAAY,aAAa,WAAM,eAAe,CAAC,CAAA;AAE/C,yDAAyD;AACzD,0EAA0E;AAC1E,kBAAyB,OAAgC;IAErD,4FAA4F;IAC5F,gFAAgF;IAChF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAE/E,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAE1F,wDAAwD;IACxD,sEAAsE;IACtE,uEAAuE;IACvE,IAAI,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE;QACnE,+EAA+E;QAE/E,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9B,oCAAoC;QACpC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAG,UAAS,IAAI;QAClC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAG,UAAS,IAAI;QAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAG,UAAS,IAAI;QAC3B,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAhCe,gBAAQ,WAgCvB,CAAA;AAED,2DAA2D;AAC3D;AACA,CAAC;AADe,kBAAU,aACzB,CAAA"}
\ No newline at end of file
diff --git a/out/test/extension.test.js b/out/test/extension.test.js
new file mode 100644
index 0000000..bfd0701
--- /dev/null
+++ b/out/test/extension.test.js
@@ -0,0 +1,16 @@
+//
+// Note: This example test is leveraging the Mocha test framework.
+// Please refer to their documentation on https://mochajs.org/ for help.
+//
+"use strict";
+// The module 'assert' provides assertion methods from node
+var assert = require('assert');
+// Defines a Mocha test suite to group tests of similar kind together
+suite("Extension Tests", function () {
+    // Defines a Mocha unit test
+    test("Something 1", function () {
+        assert.equal(-1, [1, 2, 3].indexOf(5));
+        assert.equal(-1, [1, 2, 3].indexOf(0));
+    });
+});
+//# sourceMappingURL=extension.test.js.map
\ No newline at end of file
diff --git a/out/test/extension.test.js.map b/out/test/extension.test.js.map
new file mode 100644
index 0000000..4f77cd2
--- /dev/null
+++ b/out/test/extension.test.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extension.test.js","sourceRoot":"","sources":["../../test/extension.test.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,kEAAkE;AAClE,wEAAwE;AACxE,EAAE;;AAEF,2DAA2D;AAC3D,IAAY,MAAM,WAAM,QAAQ,CAAC,CAAA;AAOjC,qEAAqE;AACrE,KAAK,CAAC,iBAAiB,EAAE;IAErB,4BAA4B;IAC5B,IAAI,CAAC,aAAa,EAAE;QAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
\ No newline at end of file
diff --git a/out/test/index.js b/out/test/index.js
new file mode 100644
index 0000000..63797a4
--- /dev/null
+++ b/out/test/index.js
@@ -0,0 +1,20 @@
+//
+// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING
+//
+// This file is providing the test runner to use when running extension tests.
+// By default the test runner in use is Mocha based.
+//
+// You can provide your own test runner if you want to override it by exporting
+// a function run(testRoot: string, clb: (error:Error) => void) that the extension
+// host can call to run the tests. The test runner is expected to use console.log
+// to report the results back to the caller. When the tests are finished, return
+// a possible error to the callback or null if none.
+var testRunner = require('vscode/lib/testrunner');
+// You can directly control Mocha options by uncommenting the following lines
+// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info
+testRunner.configure({
+    ui: 'tdd',
+    useColors: true // colored output from test results
+});
+module.exports = testRunner;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/out/test/index.js.map b/out/test/index.js.map
new file mode 100644
index 0000000..7775825
--- /dev/null
+++ b/out/test/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,8EAA8E;AAC9E,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,kFAAkF;AAClF,iFAAiF;AACjF,gFAAgF;AAChF,oDAAoD;AAEpD,IAAI,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAElD,6EAA6E;AAC7E,mGAAmG;AACnG,UAAU,CAAC,SAAS,CAAC;IACjB,EAAE,EAAE,KAAK;IACT,SAAS,EAAE,IAAI,CAAC,mCAAmC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC"}
\ No newline at end of file
diff --git a/src/extension.ts b/src/extension.ts
index 49ce8a4..e1350c5 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -2,6 +2,7 @@
 // The module 'vscode' contains the VS Code extensibility API
 // Import the module and reference it with the alias vscode in your code below
 import * as vscode from 'vscode';
+import * as child_process from 'child_process';
 
 // this method is called when your extension is activated
 // your extension is activated the very first time the command is executed
@@ -11,16 +12,31 @@
     // This line of code will only be executed once when your extension is activated
     console.log('Congratulations, your extension "previewtest-ts" is now active!');
 
+    var spawn = child_process.spawn('E:\\Docfx\\test\\extensionTest\\previewTest\\child.exe');
+
     // The command has been defined in the package.json file
     // Now provide the implementation of the command with  registerCommand
     // The commandId parameter must match the command field in package.json
     let disposable = vscode.commands.registerCommand('extension.sayHello', () => {
         // The code you place here will be executed every time your command is executed
 
+        spawn.stdin.write("t-jipe\n");
         // Display a message box to the user
         vscode.window.showInformationMessage('Hello World!');
     });
 
+    spawn.stdout.on('data' , function(data){
+        console.log("result " + data + '\n');
+    });
+
+    spawn.stderr.on('data' , function(data){
+        console.log("error " + data + '\n');
+    });
+
+    spawn.on('exit' , function(code){
+        console.log('child process exit with code ' + code);
+    })
+
     context.subscriptions.push(disposable);
 }
 
