Модуль ада при переходе на ES2015 и использовании ts-узла - PullRequest
0 голосов
/ 07 июня 2018

Я понял, что для моих библиотечных проектов лучше всего использовать TypeScript для преобразования в формат ES2015, а затем bili для преобразования его в альтернативные форматы (также известные как UMD и CJS).Так что это означает, что мой основной tsconfig.json:

{
  "compilerOptions": {
    "declaration": true,
    "module": "es2015",
    "target": "es2015",
    "lib": ["es2015", "esnext.asynciterable", "es2015.reflect"],
    "moduleResolution": "node",
    "sourceMap": true,
    "noImplicitAny": true,
    "outDir": "./lib",
    "removeComments": false,
    "typeRoots": ["./node_modules/@types"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*-spec.ts"]
}

Это делает то, что мне нужно для переноса, но вот уже много лет я наслаждаюсь моими мокко-тестами через ts-node:

ts-node --require ts-node / register 'test / ** / * - spec.ts'

Я довольно быстро понял, что все мои сценарии тестирования на основе TSтеперь падали из-за использования операторов import и т. п., но я смог решить эту проблему, добавив следующее:

TS_NODE_PROJECT = "tsconfig.test.json"ts-node --require ts-node / register 'test / ** / * - spec.ts'

Где альтернатива tsconfig.test.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es5",
    "lib": ["es2015"],
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "inlineSourceMap": true
  },
  "include": ["scripts/**/*.ts"]
}

Thisдо некоторой степени прогрессирует в том, что мои тестовые файлы - которые являются файлами TypeScript - работают сейчас, НО все не так хорошо, как я переключился с lodash на lodash-es (по понятным причинам), и теперь я получаю ошибки в пределахlodash-es:

enter image description here

, поэтому, по сути, кажется, что следующие файлы в формате ES передаютсяed:

  • мой тестовый скрипт test-spec.ts
  • мои исходные файлы src/my-file.ts

но мои зависимости исходных файлов, такие как "lodash-es", которыев ES2015 НЕ перевозятся.Есть ли способ для меня, чтобы решить эту проблему?


Обновление

Я нашел этот пост очень полезным: Tree Shake Lodash с Webpack, Jest и Typescript

Хотя в примере используется Jest, я считаю, что Мокко ведет себя так же, как описано.Чего я не знаю, так это ... есть ли способ настроить Mocha как Jest в этой статье.

...