Нужны ли ссылки на проекты машинописного текста при переносе с помощью Babel? (Электронный проект с Webpack) - PullRequest
0 голосов
/ 26 мая 2020

Я все еще нахожусь в процессе настройки конфигурации моего проекта, поэтому у меня нет никаких ошибок, с которыми нужно работать прямо сейчас, но если я правильно понимаю документы Typescript ...

Похоже, что Ссылки на проекты Документы TypeScript - Ссылки на проекты не так уж необходимы при переносе с помощью babel-loader в webpack. (Я работаю в VSCode)

Я пытаюсь преобразовать приложение Electron в TypeScript и в настоящее время реорганизую структуру папок, поэтому у меня минимальные проблемы. Я пытаюсь понять, на правильном ли я пути и могу ли я избежать включения «ссылок» и вместо этого просто использовать «extends», чтобы получить нужную мне функциональность.

Вот моя структура проекта, игнорирующая все файлы которые не являются файлами tsconfig:

./tsconfig.json
./tsconfig-base.json
./main/tsconfig.json
./src/client/tsconfig.json
./__tests__
./__tests__/__client__/tsconfig.json
./__tests__/__main__/tsconfig.json

В этой структуре ./tsconfig.json действительно будет только для ссылок, таких как пример на Microsoft Github

Electron Main Process и связанные с ним файлы находятся в формате ./main. Здесь tsconfig установит "module":"commonjs" для работы в node. Я думаю, что он также будет расширен из процесса ./tsconfig-base.json

Electron Renderer, а мои файлы приложения React-Redux находятся в ./src/client. Здесь tsconfig устанавливает "module":"es2015" или "module":"ESNEXT" для работы с модулями es. Я думаю, что это также будет расширяться от ./tsconfig-base.json

./__tests__/__client__/tsconfig.json и ./__tests__/__main__/tsconfig.json будут просто дубликатами версий папки не tests , аналогичным образом расширяющейся из базовой конфигурации в ./

Конфигурация Webpack уже настроена для обработки создания отдельных пакетов для основных процессов и процессов рендеринга, чтобы все приложение могло быть на TypeScript. Есть ли причина, по которой я должен использовать «ссылки» в моих файлах в основной или клиентской папках?

Примеры фрагментов конфигурации Webpack, прежде чем я переключу файлы tnry на файлы .ts (dev):

const rendererInclude = path.resolve(__dirname, "src");
const mainInclude = path.resolve(__dirname, "main");

Основной процесс:

module.exports = [
  {
    mode: "development",
    entry: path.join(__dirname, "main", "swell.js"),
    output: {
      path: path.join(__dirname, "dist"),
      filename: "main-bundle.js",
    },
    target: "electron-main",
    node: {
      __dirname: false,
      __filename: false,
    },
    resolve: {
      extensions: [".ts", ".tsx", ".js", ".json"],
    },
    module: {
      rules: [
        {
          test: /\.(ts|js)x?$/,
          loader: "babel-loader",
          include: mainInclude,
          exclude: /node_modules/,
        }
    ] } ... },

продолжение процесса рендеринга:

{
    mode: "development",
    entry: path.join(__dirname, "src", "index.js"),
    output: {
      path: path.join(__dirname, "dist"),
      filename: "renderer-bundle.js",
    },
    target: "electron-renderer",
    resolve: {
      extensions: [".ts", ".tsx", ".js", ".json"],
    },
    module: {
      rules: [
        {
          test: /\.(ts|js)x?$/,
          loader: "babel-loader",
          include: rendererInclude,
          exclude: /node_modules/,
        ]} ...} ]
...