Я понял, что для моих библиотечных проектов лучше всего использовать 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:
, поэтому, по сути, кажется, что следующие файлы в формате ES передаютсяed:
- мой тестовый скрипт
test-spec.ts
- мои исходные файлы
src/my-file.ts
но мои зависимости исходных файлов, такие как "lodash-es", которыев ES2015 НЕ перевозятся.Есть ли способ для меня, чтобы решить эту проблему?
Обновление
Я нашел этот пост очень полезным: Tree Shake Lodash с Webpack, Jest и Typescript
Хотя в примере используется Jest, я считаю, что Мокко ведет себя так же, как описано.Чего я не знаю, так это ... есть ли способ настроить Mocha как Jest в этой статье.