Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
17bda4b2
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
17bda4b2
编写于
12月 15, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Do not write .d.ts files to disk, as they are not needed there
上级
52c252b8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
42 deletion
+23
-42
build/lib/compilation.js
build/lib/compilation.js
+10
-41
build/lib/compilation.ts
build/lib/compilation.ts
+13
-1
未找到文件。
build/lib/compilation.js
浏览文件 @
17bda4b2
...
...
@@ -58,9 +58,13 @@ function compileTask(out, build) {
return
function
()
{
var
compile
=
createCompile
(
build
,
true
);
var
src
=
es
.
merge
(
gulp
.
src
(
'
src/**
'
,
{
base
:
'
src
'
}),
gulp
.
src
(
'
node_modules/typescript/lib/lib.d.ts
'
));
// Do not write .d.ts files to disk, as they are not needed there.
var
dtsFilter
=
util
.
filter
(
function
(
data
)
{
return
!
/
\.
d
\.
ts$/
.
test
(
data
.
path
);
});
return
src
.
pipe
(
compile
())
.
pipe
(
dtsFilter
)
.
pipe
(
gulp
.
dest
(
out
))
.
pipe
(
dtsFilter
.
restore
)
.
pipe
(
monacodtsTask
(
out
,
false
));
};
}
...
...
@@ -70,54 +74,19 @@ function watchTask(out, build) {
var
compile
=
createCompile
(
build
);
var
src
=
es
.
merge
(
gulp
.
src
(
'
src/**
'
,
{
base
:
'
src
'
}),
gulp
.
src
(
'
node_modules/typescript/lib/lib.d.ts
'
));
var
watchSrc
=
watch
(
'
src/**
'
,
{
base
:
'
src
'
});
// Do not write .d.ts files to disk, as they are not needed there.
var
dtsFilter
=
util
.
filter
(
function
(
data
)
{
return
!
/
\.
d
\.
ts$/
.
test
(
data
.
path
);
});
return
watchSrc
.
pipe
(
util
.
incremental
(
compile
,
src
,
true
))
.
pipe
(
dtsFilter
)
.
pipe
(
gulp
.
dest
(
out
))
.
pipe
(
dtsFilter
.
restore
)
.
pipe
(
monacodtsTask
(
out
,
true
));
};
}
exports
.
watchTask
=
watchTask
;
function
reloadTypeScriptNodeModule
()
{
var
util
=
require
(
'
gulp-util
'
);
function
log
(
message
)
{
var
rest
=
[];
for
(
var
_i
=
1
;
_i
<
arguments
.
length
;
_i
++
)
{
rest
[
_i
-
1
]
=
arguments
[
_i
];
}
util
.
log
.
apply
(
util
,
[
util
.
colors
.
cyan
(
'
[memory watch dog]
'
),
message
].
concat
(
rest
));
}
function
heapUsed
()
{
return
(
process
.
memoryUsage
().
heapUsed
/
1024
/
1024
).
toFixed
(
2
)
+
'
MB
'
;
}
return
es
.
through
(
function
(
data
)
{
this
.
emit
(
'
data
'
,
data
);
},
function
()
{
log
(
'
memory usage after compilation finished:
'
+
heapUsed
());
// It appears we are running into some variant of
// https://bugs.chromium.org/p/v8/issues/detail?id=2073
//
// Even though all references are dropped, some
// optimized methods in the TS compiler end up holding references
// to the entire TypeScript language host (>600MB)
//
// The idea is to force v8 to drop references to these
// optimized methods, by "reloading" the typescript node module
log
(
'
Reloading typescript node module...
'
);
var
resolvedName
=
require
.
resolve
(
'
typescript
'
);
var
originalModule
=
require
.
cache
[
resolvedName
];
delete
require
.
cache
[
resolvedName
];
var
newExports
=
require
(
'
typescript
'
);
require
.
cache
[
resolvedName
]
=
originalModule
;
for
(
var
prop
in
newExports
)
{
if
(
newExports
.
hasOwnProperty
(
prop
))
{
originalModule
.
exports
[
prop
]
=
newExports
[
prop
];
}
}
log
(
'
typescript node module reloaded.
'
);
this
.
emit
(
'
end
'
);
});
}
function
monacodtsTask
(
out
,
isWatch
)
{
var
basePath
=
path
.
resolve
(
process
.
cwd
(),
out
);
var
neededFiles
=
{};
monacodts
.
getFilesToWatch
(
out
).
forEach
(
function
(
filePath
)
{
filePath
=
path
.
normalize
(
filePath
);
...
...
@@ -160,7 +129,7 @@ function monacodtsTask(out, isWatch) {
}));
}
resultStream
=
es
.
through
(
function
(
data
)
{
var
filePath
=
path
.
normalize
(
data
.
path
);
var
filePath
=
path
.
normalize
(
path
.
resolve
(
basePath
,
data
.
relative
)
);
if
(
neededFiles
[
filePath
])
{
setInputFile
(
filePath
,
data
.
contents
.
toString
());
}
...
...
build/lib/compilation.ts
浏览文件 @
17bda4b2
...
...
@@ -74,9 +74,14 @@ export function compileTask(out: string, build: boolean): () => NodeJS.ReadWrite
gulp
.
src
(
'
node_modules/typescript/lib/lib.d.ts
'
),
);
// Do not write .d.ts files to disk, as they are not needed there.
const
dtsFilter
=
util
.
filter
(
data
=>
!
/
\.
d
\.
ts$/
.
test
(
data
.
path
));
return
src
.
pipe
(
compile
())
.
pipe
(
dtsFilter
)
.
pipe
(
gulp
.
dest
(
out
))
.
pipe
(
dtsFilter
.
restore
)
.
pipe
(
monacodtsTask
(
out
,
false
));
};
}
...
...
@@ -92,15 +97,22 @@ export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteSt
);
const
watchSrc
=
watch
(
'
src/**
'
,
{
base
:
'
src
'
});
// Do not write .d.ts files to disk, as they are not needed there.
const
dtsFilter
=
util
.
filter
(
data
=>
!
/
\.
d
\.
ts$/
.
test
(
data
.
path
));
return
watchSrc
.
pipe
(
util
.
incremental
(
compile
,
src
,
true
))
.
pipe
(
dtsFilter
)
.
pipe
(
gulp
.
dest
(
out
))
.
pipe
(
dtsFilter
.
restore
)
.
pipe
(
monacodtsTask
(
out
,
true
));
};
}
function
monacodtsTask
(
out
:
string
,
isWatch
:
boolean
):
NodeJS
.
ReadWriteStream
{
const
basePath
=
path
.
resolve
(
process
.
cwd
(),
out
);
const
neededFiles
:
{
[
file
:
string
]:
boolean
;
}
=
{};
monacodts
.
getFilesToWatch
(
out
).
forEach
(
function
(
filePath
)
{
filePath
=
path
.
normalize
(
filePath
);
...
...
@@ -148,7 +160,7 @@ function monacodtsTask(out: string, isWatch: boolean): NodeJS.ReadWriteStream {
}
resultStream
=
es
.
through
(
function
(
data
)
{
const
filePath
=
path
.
normalize
(
data
.
path
);
const
filePath
=
path
.
normalize
(
path
.
resolve
(
basePath
,
data
.
relative
)
);
if
(
neededFiles
[
filePath
])
{
setInputFile
(
filePath
,
data
.
contents
.
toString
());
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录