awesome-typescript-loader загружать / компилировать только ссылки на файлы

Можно ли настроить awesome-typescript-загрузчик или веб-пакет или tsc так, чтобы просто компилировать файлы, на которые ссылаются (прямо, косвенно) из записи? Я хочу портировать существующее приложение и хочу иметь возможность скомпилировать мой частично перенесенный код, в то время как некоторые файлы, на которые нет ссылок, не компилируются.

Используемые инструменты

  • awesome-typcript-loader: 3.1.2,
  • веб-пакет: 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)

[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

1 ответ

Решение

Сам по себе Webpack не содержит файлов, которые не импортируются. Но TypeScript, кажется, проверяет каждый файл в вашем проекте, если не настроено иначе. От tsconfig.json документы:

Если оба параметра "files" и "include" не указаны, компилятор по умолчанию включает все файлы TypeScript (.ts,.d.ts и.tsx) в содержащий каталог и подкаталоги, кроме тех, которые исключены с использованием свойства "exclude".

Вы можете установить files возможность включить только вашу точку входа, и она должна проверять только файлы, которые вы импортируете.

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

Насколько я тестировал, вы также можете установить его в пустой массив, чтобы он не проверял файлы по умолчанию и awesome-typescript-loader передаст файлы компилятору, как и ожидалось, и они все равно будут проверены.

"files": []
Другие вопросы по тегам