Webstorm 11检查打字稿文件而不​​编译。使用webpack进行编译

时间:2015-12-16 17:33:01

标签: javascript typescript webstorm webpack

我正在尝试使用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。

3 个答案:

答案 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编译器”,如下所示:

enter image description here

答案 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中启用了集成

Option 'Use TypeScript service'

答案 2 :(得分:1)

我找到了防止编译器输出的方法,而不是tsconfig - noEmit选项。

{
  "compilerOptions": {
    "module": "commonjs",
    "noEmit": true,
    "target": "es5",
    "sourceMap": true,
    "jsx": "react"
  },
  "exclude": [
    "node_modules"
  ]
}

使用此配置,我在webstorm中没有额外的文件和正确的错误突出显示。