Итак, я немного балуюсь Typescript и Grunt, чтобы посмотреть, стоит ли оно того для меня. Дело в том, что Typescript не компилируется в файлы *.mjs
, а только в обычные файлы *.js
. Node поддерживает модули ES6, но только в том случае, если вы либо помечаете их как файлы '* .jsm', либо устанавливаете "type": "module"
. Однако установка этого поля верхнего уровня в package.json
имеет глобальную область действия для любого файла *.js
в том же каталоге и любых последующих.
Это приводит к поломке файла Gruntfile.js
, как кажется, поскольку он использует Common JS модулей, см. Мой самый базовый c Gruntfile в качестве примера:
module.exports = function (grunt) {
grunt.initConfig({
ts: {
default: {tsconfig: "./tsconfig.json"}
}
})
grunt.loadNpmTasks("grunt-ts");
grunt.registerTask("default", ["ts"]);
}
Не ожидая особого успеха, я наивно изменил синтаксис экспорта с module.exports =
на export default
, который, как и ожидалось, не сработал, поскольку он не работал В этом нет особого смысла.
Вопросы
- Есть ли возможность использовать Grunt с модулями ES6, включенными в узле?
- Есть ли подходящий способ сообщить TypeScript компилировать в
*.mjs
файлы?