Skip to content

Commit fd6d884

Browse files
Merge pull request #34 from NativeScript/kerezov/after-watch
Implement after-watch hook
2 parents 56938b9 + ad976c1 commit fd6d884

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

lib/after-watch.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var compiler = require('./compiler');
2+
3+
module.exports = function ($logger) {
4+
var tsc = compiler.getTscProcess();
5+
if (tsc) {
6+
$logger.info("Stopping tsc watch");
7+
tsc.kill("SIGINT")
8+
}
9+
}

lib/compiler.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
exports.runTypeScriptCompiler = runTypeScriptCompiler;
2+
exports.getTscProcess = getTscProcess;
23

34
var spawn = require('child_process').spawn;
45
var fs = require('fs');
56
var path = require('path');
7+
var tsc = null;
68

79
function runTypeScriptCompiler(logger, projectDir, options) {
810
return new Promise(function (resolve, reject) {
@@ -34,41 +36,46 @@ function runTypeScriptCompiler(logger, projectDir, options) {
3436
}
3537

3638
logger.trace(process.execPath, nodeArgs.join(' '));
37-
var tsc = spawn(process.execPath, nodeArgs);
39+
tsc = spawn(process.execPath, nodeArgs);
3840

3941
var isResolved = false;
40-
tsc.stdout.on('data', function(data) {
42+
tsc.stdout.on('data', function (data) {
4143
var stringData = data.toString();
4244
logger.info(stringData);
43-
if(options.watch && stringData.toLowerCase().indexOf("compilation complete. watching for file changes.") !== -1 && !isResolved) {
45+
if (options.watch && stringData.toLowerCase().indexOf("compilation complete. watching for file changes.") !== -1 && !isResolved) {
4446
isResolved = true;
4547
resolve();
4648
}
4749
});
4850

49-
tsc.stderr.on('data', function(data) {
51+
tsc.stderr.on('data', function (data) {
5052
logger.info(data.toString());
5153
});
5254

53-
tsc.on('error', function(err) {
55+
tsc.on('error', function (err) {
5456
logger.info(err.message);
55-
if(!isResolved) {
57+
if (!isResolved) {
5658
isResolved = true;
5759
reject(err);
5860
}
5961
});
6062

6163
// TODO: Consider using close event instead of exit
6264
tsc.on('exit', function (code, signal) {
63-
if(!isResolved) {
65+
tsc = null;
66+
if (!isResolved) {
6467
isResolved = true;
6568
// EmitReturnStatus enum in https://github.com/Microsoft/TypeScript/blob/8947757d096338532f1844d55788df87fb5a39ed/src/compiler/types.ts#L605
6669
if (code === 0 || code === 2 || code === 3) {
6770
resolve();
6871
} else {
69-
reject(Error('TypeScript compiler failed with exit code ' + code));
72+
reject(new Error('TypeScript compiler failed with exit code ' + code));
7073
}
7174
}
7275
});
7376
});
7477
}
78+
79+
function getTscProcess() {
80+
return tsc;
81+
}

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nativescript-dev-typescript",
3-
"version": "0.4.5",
3+
"version": "0.5.0",
44
"description": "TypeScript support for NativeScript projects. Install using `tns install typescript`.",
55
"scripts": {
66
"test": "exit 0",
@@ -21,6 +21,11 @@
2121
"type": "before-watch",
2222
"script": "lib/watch.js",
2323
"inject": true
24+
},
25+
{
26+
"type": "after-watch",
27+
"script": "lib/after-watch.js",
28+
"inject": true
2429
}
2530
]
2631
},

0 commit comments

Comments
 (0)