我正在尝试使用webpack和webpack和打字稿,我一直坚持错误检查。 我想用webpack编译ts文件,所以我需要避免通过Webstorm编译源文件,但似乎Webstorm只在编译过程中执行错误检查。
对应于webstorm文档“使用tsconfig.json解析对象”应激活错误检查而不编译,但不是。
示例代码,Webstorm没有突出显示
{ let z = 4;}
console.log(z);
我的tsconfig文件:
{
"compilerOptions": {
"module": "commonjs",
"out": "build/tsc.js",
"target": "es5",
"sourceMap": true,
"jsx": "react"
},
"exclude": [
"node_modules"
]
}
同时Visual Studio代码显示错误很好。 我的配置中有任何错误吗? 是否可以使用Webstorm或其他JetBrains IDE突出显示错误?
Typescript version 1.7,Webstorm 11。
答案 0 :(得分:6)
原始答案(过时 - 请参阅下面的更新):
正如Valery正确指出你可以将“noEmit”属性设置为true以防止编译器创建任何输出文件。
但是,如果您的Webpack安装程序使用相同的tsconfig.json文件,它也会阻止webpack创建输出文件。您只会在下次重新启动webpack时注意到这一点。
在我的webpack设置中,我正在使用“ts-loader”Typescript加载器。 如ts-loader github page所述,您可以覆盖编译器选项。
所以这是我的设置:
tsconfig.json(由IDE和Webpack使用)
"compilerOptions": {
"noEmit": true, // do not emit js and map files
...
webpack.config.json(由Webpack使用)
{
test: /\.ts$/,
loader: 'ts-loader',
query: {
'compilerOptions': {
"noEmit": false // make sure js files do get emitted
}
},
...
}
Et voila:IDE编译器检查没有js和js.map文件污染您的源代码文件夹!
更新: 我的答案是1月份的有效解决方法,但今天更好的解决方案是使用anstarovoyt建议的Webstorm / IDEA内的Typescript服务。
另外,请不要忘记UNcheck“启用TypeScript编译器”,如下所示:
答案 1 :(得分:4)
WebStorm 2016.1(和其他IJ 2016.1 IDE)支持{
"compileOnSave": false,
"compilerOptions": {
"module": "commonjs"
}
}
选项。例如:
#include<stdlib.h>
#include<stdio.h>
struct tree{char info;struct tree *left;struct tree *right;};
struct tree *root;
struct tree *stree(struct tree *root,struct tree *r,char info);
void print_tree(struct tree *root,int l);
int main(void)
{
char s[80];
root=NULL;
do {
printf("enter a letter:");
gets(s);
root=stree(root,root, *s);
}
while(*s); // <- ???
print_tree(root,0);
return 0;
}
struct tree *stree(struct tree *root,struct tree *r,char info;{ // <- ???
if(!r) {
r=(struct tree *) malloc(sizeof(struct tree));
if(!r) {
printf("out of memory \n");
exit(0);
}
r->left=NULL;
r->right=NULL;
r->info=info;
if(!root)
return r;
if(info<root->info)
root->left=r;
else
root->right=r;
return r;}if(info<r->info)stree(r,r->left,info);else
stree(r,r->right,info);return root;}
void print_tree(struct tree *r,int l);
{
int i;
if(!r) return ;
print_tree(r->right,l+1);
for(i=0;i<l;++i)
printf(" ");
printf("%c \n",r->info);
print_tree(r->left,l+1);
}
更新:WebStorm 2016.2具有全新的“TypeScript服务”集成功能。
您根本不需要“TypeScript编译器”集成。只需选中“使用TypeScript服务”选项即可。此外,新的集成工作更快。
更新2:默认情况下,在WebStorm 2016.3中启用了集成
答案 2 :(得分:1)
我找到了防止编译器输出的方法,而不是tsconfig - noEmit选项。
{
"compilerOptions": {
"module": "commonjs",
"noEmit": true,
"target": "es5",
"sourceMap": true,
"jsx": "react"
},
"exclude": [
"node_modules"
]
}
使用此配置,我在webstorm中没有额外的文件和正确的错误突出显示。