awesome-typescript-loader 只加载/编译引用文件 [英] awesome-typescript-loader load / compile only refrenced files

查看:32
本文介绍了awesome-typescript-loader 只加载/编译引用文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以将 awesome-typescript-loader 或 webpack 或 tsc 配置为仅编译从条目中引用(直接、间接)的文件?我想移植现有的应用程序,并希望能够编译我部分移植的代码,而某些未引用文件无法编译.

Is it possible to configure the awesome-typescript-loader or webpack or the tsc to just compile files that are referenced (directly, indirectly) from the entry? I want to port an existing application and want to be able to compile my partially ported code while some unreferenced files are not compilable.

使用过的工具

  • awesome-typescript-loader: 3.1.2,
  • webpack:2.3.3

webpack.js

var webpack = require('webpack');
module.exports = {
    entry: {
        'index': './Scripts/index.ts',
    },

    output: {
        path: helpers.root('dist'),
        filename: '[name].js'
    },

    resolve: {
        extensions: ['.ts', '.js']
    },
    module: {
        rules: [
            {
                test: /.ts$/,
                loader: 'awesome-typescript-loader'
            }
        ]
    }
}

tsconfig

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "importHelpers": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "sourceMap": true,
    "lib": [
      "dom",
      "es5",
      "scripthost"
    ],
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true
  },
  "exclude": [
    "node_modules"
  ]
}

错误消息(来自 index.ts 未引用的文件)

Error Messages (from files that are not referenced by index.ts)

[at-loader] Checking started in a separate process...

[at-loader] Checking finished with 46 errors
Hash: a2f6e7a56b152c02a325
Version: webpack 2.3.3
Time: 3554ms
   Asset     Size  Chunks             Chunk Names
index.js  2.73 kB       0  [emitted]  index
   [0] ./Scripts/index.ts 79 bytes {0} [built]

ERROR in [at-loader] ./Scripts/editor/foo.ts:47:61
    TS2448: Block-scoped variable 'eventList' used before its declaration.

... MORE ERRORS ...

npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
npm ERR! node v6.9.2
npm ERR! npm  v3.10.9
npm ERR! code ELIFECYCLE
npm ERR! FooBar@1.0.0 build: `webpack --config webpack.config.js`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the FooBar@1.0.0 build script 'webpack --config webpack.config.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the FooBar package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     webpack --config webpack.config.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs FooBar
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls FooBar
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     D:\FooBar\npm-debug.log

推荐答案

Webpack 本身不包含任何未被导入的文件.但是除非另有配置,否则 TypeScript 似乎会检查项目中的每个文件.来自 tsconfig.json 文档:

Webpack itself does not include any files that are not being imported. But TypeScript seems to check every file in your project unless otherwise configured. From the tsconfig.json docs:

如果files"和include"都未指定,编译器默认将所有 TypeScript(.ts、.d.ts 和 .tsx)文件包含在包含目录和子目录中,使用exclude"排除的文件除外" 属性.

If the "files" and "include" are both left unspecified, the compiler defaults to including all TypeScript (.ts, .d.ts and .tsx) files in the containing directory and subdirectories except those excluded using the "exclude" property.

您可以将 files 选项设置为仅包含您的入口点,并且它应该只检查您正在导入的文件.

You can set the files option to only include your entry point and it should only check the files you're importing.

"files": [
  "Scripts/index.ts"
]

据我测试,您也可以将其设置为空数组,因此默认情况下它不会检查任何文件,awesome-typescript-loader 会将文件传递给编译器正如预期的那样,它们仍将被检查.

As far as I've tested you can also set it to an empty array, so it won't check any files by default and awesome-typescript-loader will pass the files to the compiler as expected, and they will still be checked.

"files": []

这篇关于awesome-typescript-loader 只加载/编译引用文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆