Skip to content

Commit 9f2f49b

Browse files
authored
Merge pull request #180 from tansongyang/programmatic-compilation
Windows-compatible programmatic compilations
2 parents 9fc14c5 + a6e9c72 commit 9f2f49b

File tree

3 files changed

+158
-26
lines changed

3 files changed

+158
-26
lines changed

lib/utilities/compile.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
const mkdirp = require('mkdirp');
55
const ts = require('typescript');
6-
const sane = require('sane');
6+
const chokidar = require('chokidar');
77
const fs = require('fs-extra');
88

99
module.exports = function compile(project, tsOptions, callbacks) {
@@ -31,14 +31,15 @@ module.exports = function compile(project, tsOptions, callbacks) {
3131
watchDirectory(dir, callback) {
3232
if (!fs.existsSync(dir)) return;
3333

34-
let watcher = new sane.WatchmanWatcher(dir, { ignored: 'tmp/**' });
34+
let ignored = /\.\w+\/|dist\/|node_modules\/|tmp\//;
35+
let watcher = chokidar.watch(dir, { ignored });
3536

3637
let invoke = (type, path) => {
37-
let fullPath = `${dir}/${path}`;
38+
path = path.replace(/\\/g, '/'); // Normalize Windows
3839
if (type === 'add') {
3940
callback(path);
40-
} else if (watchedFiles.has(fullPath)) {
41-
watchedFiles.get(fullPath)(fullPath, type === 'change' ? 1 : 2);
41+
} else if (watchedFiles.has(path)) {
42+
watchedFiles.get(path)(path, type === 'change' ? 1 : 2);
4243
}
4344
};
4445

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"broccoli-plugin": "^1.2.1",
3737
"broccoli-stew": "^1.4.0",
3838
"chalk": "^2.3.0",
39+
"chokidar": "^2.0.3",
3940
"debug": "^3.1.0",
4041
"ember-cli": "*",
4142
"ember-cli-get-component-path-option": "^1.0.0",
@@ -55,7 +56,6 @@
5556
"resolve": "^1.5.0",
5657
"rimraf": "^2.6.2",
5758
"rsvp": "^4.8.1",
58-
"sane": "^2.4.1",
5959
"silent-error": "^1.1.0",
6060
"symlink-or-copy": "^1.1.8",
6161
"walk-sync": "^0.3.2"

yarn.lock

Lines changed: 151 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,13 @@ anymatch@^1.3.0:
206206
micromatch "^2.1.5"
207207
normalize-path "^2.0.0"
208208

209+
anymatch@^2.0.0:
210+
version "2.0.0"
211+
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
212+
dependencies:
213+
micromatch "^3.1.4"
214+
normalize-path "^2.1.1"
215+
209216
aot-test-generators@^0.1.0:
210217
version "0.1.0"
211218
resolved "https://registry.yarnpkg.com/aot-test-generators/-/aot-test-generators-0.1.0.tgz#43f0f615f97cb298d7919c1b0b4e6b7310b03cd0"
@@ -1409,6 +1416,23 @@ braces@^2.3.0:
14091416
split-string "^3.0.2"
14101417
to-regex "^3.0.1"
14111418

1419+
braces@^2.3.1:
1420+
version "2.3.1"
1421+
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb"
1422+
dependencies:
1423+
arr-flatten "^1.1.0"
1424+
array-unique "^0.3.2"
1425+
define-property "^1.0.0"
1426+
extend-shallow "^2.0.1"
1427+
fill-range "^4.0.0"
1428+
isobject "^3.0.1"
1429+
kind-of "^6.0.2"
1430+
repeat-element "^1.1.2"
1431+
snapdragon "^0.8.1"
1432+
snapdragon-node "^2.0.1"
1433+
split-string "^3.0.2"
1434+
to-regex "^3.0.1"
1435+
14121436
breakable@~1.0.0:
14131437
version "1.0.0"
14141438
resolved "https://registry.yarnpkg.com/breakable/-/breakable-1.0.0.tgz#784a797915a38ead27bad456b5572cb4bbaa78c1"
@@ -2003,6 +2027,24 @@ chokidar@1.7.0:
20032027
optionalDependencies:
20042028
fsevents "^1.0.0"
20052029

2030+
chokidar@^2.0.3:
2031+
version "2.0.3"
2032+
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176"
2033+
dependencies:
2034+
anymatch "^2.0.0"
2035+
async-each "^1.0.0"
2036+
braces "^2.3.0"
2037+
glob-parent "^3.1.0"
2038+
inherits "^2.0.1"
2039+
is-binary-path "^1.0.0"
2040+
is-glob "^4.0.0"
2041+
normalize-path "^2.1.1"
2042+
path-is-absolute "^1.0.0"
2043+
readdirp "^2.0.0"
2044+
upath "^1.0.0"
2045+
optionalDependencies:
2046+
fsevents "^1.1.2"
2047+
20062048
circular-json@^0.3.1:
20072049
version "0.3.3"
20082050
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
@@ -2415,6 +2457,13 @@ define-property@^1.0.0:
24152457
dependencies:
24162458
is-descriptor "^1.0.0"
24172459

2460+
define-property@^2.0.2:
2461+
version "2.0.2"
2462+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
2463+
dependencies:
2464+
is-descriptor "^1.0.2"
2465+
isobject "^3.0.1"
2466+
24182467
defined@^1.0.0:
24192468
version "1.0.0"
24202469
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -3462,7 +3511,7 @@ extend-shallow@^2.0.1:
34623511
dependencies:
34633512
is-extendable "^0.1.0"
34643513

3465-
extend-shallow@^3.0.0:
3514+
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
34663515
version "3.0.2"
34673516
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
34683517
dependencies:
@@ -3495,7 +3544,7 @@ extglob@^0.3.1:
34953544
dependencies:
34963545
is-extglob "^1.0.0"
34973546

3498-
extglob@^2.0.2:
3547+
extglob@^2.0.2, extglob@^2.0.4:
34993548
version "2.0.4"
35003549
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
35013550
dependencies:
@@ -3801,7 +3850,7 @@ fs.realpath@^1.0.0:
38013850
version "1.0.0"
38023851
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
38033852

3804-
fsevents@^1.0.0, fsevents@^1.1.1:
3853+
fsevents@^1.0.0, fsevents@^1.1.1, fsevents@^1.1.2:
38053854
version "1.1.3"
38063855
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
38073856
dependencies:
@@ -3910,6 +3959,13 @@ glob-parent@^2.0.0:
39103959
dependencies:
39113960
is-glob "^2.0.0"
39123961

3962+
glob-parent@^3.1.0:
3963+
version "3.1.0"
3964+
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
3965+
dependencies:
3966+
is-glob "^3.1.0"
3967+
path-dirname "^1.0.0"
3968+
39133969
glob@7.1.1:
39143970
version "7.1.1"
39153971
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
@@ -4344,7 +4400,7 @@ is-descriptor@^0.1.0:
43444400
is-data-descriptor "^0.1.4"
43454401
kind-of "^5.0.0"
43464402

4347-
is-descriptor@^1.0.0:
4403+
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
43484404
version "1.0.2"
43494405
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
43504406
dependencies:
@@ -4376,7 +4432,7 @@ is-extglob@^1.0.0:
43764432
version "1.0.0"
43774433
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
43784434

4379-
is-extglob@^2.1.0:
4435+
is-extglob@^2.1.0, is-extglob@^2.1.1:
43804436
version "2.1.1"
43814437
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
43824438

@@ -4412,6 +4468,12 @@ is-glob@^3.1.0:
44124468
dependencies:
44134469
is-extglob "^2.1.0"
44144470

4471+
is-glob@^4.0.0:
4472+
version "4.0.0"
4473+
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
4474+
dependencies:
4475+
is-extglob "^2.1.1"
4476+
44154477
is-integer@^1.0.4:
44164478
version "1.0.7"
44174479
resolved "https://registry.yarnpkg.com/is-integer/-/is-integer-1.0.7.tgz#6bde81aacddf78b659b6629d629cadc51a886d5c"
@@ -4430,6 +4492,10 @@ is-number@^3.0.0:
44304492
dependencies:
44314493
kind-of "^3.0.2"
44324494

4495+
is-number@^4.0.0:
4496+
version "4.0.0"
4497+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
4498+
44334499
is-obj@^1.0.0:
44344500
version "1.0.1"
44354501
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -4440,6 +4506,12 @@ is-odd@^1.0.0:
44404506
dependencies:
44414507
is-number "^3.0.0"
44424508

4509+
is-odd@^2.0.0:
4510+
version "2.0.0"
4511+
resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24"
4512+
dependencies:
4513+
is-number "^4.0.0"
4514+
44434515
is-path-cwd@^1.0.0:
44444516
version "1.0.0"
44454517
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -4510,6 +4582,10 @@ is-windows@^1.0.1:
45104582
version "1.0.1"
45114583
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9"
45124584

4585+
is-windows@^1.0.2:
4586+
version "1.0.2"
4587+
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
4588+
45134589
isarray@0.0.1:
45144590
version "0.0.1"
45154591
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -5075,6 +5151,24 @@ micromatch@^3.0.4:
50755151
snapdragon "^0.8.1"
50765152
to-regex "^3.0.1"
50775153

5154+
micromatch@^3.1.4:
5155+
version "3.1.10"
5156+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
5157+
dependencies:
5158+
arr-diff "^4.0.0"
5159+
array-unique "^0.3.2"
5160+
braces "^2.3.1"
5161+
define-property "^2.0.2"
5162+
extend-shallow "^3.0.2"
5163+
extglob "^2.0.4"
5164+
fragment-cache "^0.2.1"
5165+
kind-of "^6.0.2"
5166+
nanomatch "^1.2.9"
5167+
object.pick "^1.3.0"
5168+
regex-not "^1.0.0"
5169+
snapdragon "^0.8.1"
5170+
to-regex "^3.0.2"
5171+
50785172
"mime-db@>= 1.29.0 < 2", mime-db@~1.29.0:
50795173
version "1.29.0"
50805174
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878"
@@ -5221,6 +5315,23 @@ nanomatch@^1.2.5:
52215315
snapdragon "^0.8.1"
52225316
to-regex "^3.0.1"
52235317

5318+
nanomatch@^1.2.9:
5319+
version "1.2.9"
5320+
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2"
5321+
dependencies:
5322+
arr-diff "^4.0.0"
5323+
array-unique "^0.3.2"
5324+
define-property "^2.0.2"
5325+
extend-shallow "^3.0.2"
5326+
fragment-cache "^0.2.1"
5327+
is-odd "^2.0.0"
5328+
is-windows "^1.0.2"
5329+
kind-of "^6.0.2"
5330+
object.pick "^1.3.0"
5331+
regex-not "^1.0.0"
5332+
snapdragon "^0.8.1"
5333+
to-regex "^3.0.1"
5334+
52245335
natural-compare@^1.4.0:
52255336
version "1.4.0"
52265337
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -5303,7 +5414,7 @@ nopt@^4.0.1:
53035414
abbrev "1"
53045415
osenv "^0.1.4"
53055416

5306-
normalize-path@^2.0.0, normalize-path@^2.0.1:
5417+
normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
53075418
version "2.1.1"
53085419
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
53095420
dependencies:
@@ -5531,6 +5642,10 @@ pascalcase@^0.1.1:
55315642
version "0.1.1"
55325643
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
55335644

5645+
path-dirname@^1.0.0:
5646+
version "1.0.2"
5647+
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
5648+
55345649
path-exists@^1.0.0:
55355650
version "1.0.0"
55365651
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-1.0.0.tgz#d5a8998eb71ef37a74c34eb0d9eba6e878eea081"
@@ -5863,6 +5978,13 @@ regex-not@^1.0.0:
58635978
dependencies:
58645979
extend-shallow "^2.0.1"
58655980

5981+
regex-not@^1.0.2:
5982+
version "1.0.2"
5983+
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
5984+
dependencies:
5985+
extend-shallow "^3.0.2"
5986+
safe-regex "^1.1.0"
5987+
58665988
regexpu-core@^2.0.0:
58675989
version "2.0.0"
58685990
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
@@ -6015,6 +6137,10 @@ restore-cursor@^2.0.0:
60156137
onetime "^2.0.0"
60166138
signal-exit "^3.0.2"
60176139

6140+
ret@~0.1.10:
6141+
version "0.1.15"
6142+
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
6143+
60186144
rfc6902-ordered@^2.1.0:
60196145
version "2.1.0"
60206146
resolved "https://registry.yarnpkg.com/rfc6902-ordered/-/rfc6902-ordered-2.1.0.tgz#19de9061d316149b0994e0f734ff34e09264e9f9"
@@ -6096,6 +6222,12 @@ safe-json-parse@~1.0.1:
60966222
version "1.0.1"
60976223
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57"
60986224

6225+
safe-regex@^1.1.0:
6226+
version "1.1.0"
6227+
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
6228+
dependencies:
6229+
ret "~0.1.10"
6230+
60996231
sane@^1.1.1:
61006232
version "1.7.0"
61016233
resolved "https://registry.yarnpkg.com/sane/-/sane-1.7.0.tgz#b3579bccb45c94cf20355cc81124990dfd346e30"
@@ -6122,20 +6254,6 @@ sane@^2.2.0:
61226254
optionalDependencies:
61236255
fsevents "^1.1.1"
61246256

6125-
sane@^2.4.1:
6126-
version "2.4.1"
6127-
resolved "https://registry.yarnpkg.com/sane/-/sane-2.4.1.tgz#29f991208cf28636720efdc584293e7fd66663a5"
6128-
dependencies:
6129-
anymatch "^1.3.0"
6130-
exec-sh "^0.2.0"
6131-
fb-watchman "^2.0.0"
6132-
minimatch "^3.0.2"
6133-
minimist "^1.1.1"
6134-
walker "~1.0.5"
6135-
watch "~0.18.0"
6136-
optionalDependencies:
6137-
fsevents "^1.1.1"
6138-
61396257
semver@^4.3.1:
61406258
version "4.3.6"
61416259
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
@@ -6770,6 +6888,15 @@ to-regex@^3.0.1:
67706888
extend-shallow "^2.0.1"
67716889
regex-not "^1.0.0"
67726890

6891+
to-regex@^3.0.2:
6892+
version "3.0.2"
6893+
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
6894+
dependencies:
6895+
define-property "^2.0.2"
6896+
extend-shallow "^3.0.2"
6897+
regex-not "^1.0.2"
6898+
safe-regex "^1.1.0"
6899+
67736900
tough-cookie@~2.3.0:
67746901
version "2.3.2"
67756902
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
@@ -6928,6 +7055,10 @@ untildify@^2.1.0:
69287055
dependencies:
69297056
os-homedir "^1.0.0"
69307057

7058+
upath@^1.0.0:
7059+
version "1.0.4"
7060+
resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d"
7061+
69317062
urix@^0.1.0:
69327063
version "0.1.0"
69337064
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"

0 commit comments

Comments
 (0)