Можно ли транспилировать локальные модули из node_module?

У меня есть 2 проекта машинописного текста, которые содержат несколько классов. Я добавил зависимость Project1 в Project2 в package.json

{
  "name": "Project2",
  "dependencies": {
    "@Project1": "file:../Project1/dist"
  }
}

Оба проекта построены с использованием

цель: es5, модуль: es2015,

Я использую Karma-Webpack для настройки тестовой среды для проектов. Для транспиляции кода я использовал babel-loader (с предустановкой: es2015) вместо ts- погрузчик. Он переносит код из Project2, но код из Project1, расположенный в node_modules, не переносится. Из-за этого при запуске теста возникает ошибка ниже.

Chrome 55.0.2883 (Windows 10 0.0.0) ERROR Uncaught SyntaxError: Неожиданный экспорт токена в spec.bundle.js: 80972

Мне было интересно, можно ли перенести локальные модули из node_modules с помощью webpack?

Примечание. Если я изменю тип модуля на commonjs, он будет работать, но это не то решение, которое я ищу.

Какие-либо предложения???


person Ashish Mulaye    schedule 24.01.2017    source источник
comment
код в node_modules уже должен быть перенесен.   -  person toskv    schedule 24.01.2017
comment
Хорошо. есть ли способ предварительно обработать его с помощью каких-либо карма-препроцессоров? похож на другой код?   -  person Ashish Mulaye    schedule 24.01.2017
comment
ну .. если вы используете gulp или grunt, вы можете просто создавать проекты. Но это был бы действительно беспорядочный способ решения проблем.   -  person toskv    schedule 24.01.2017
comment
Получив решение, вы можете настроить webpack для переноса локального зависимого модуля (помещенного внутри node_module) с помощью babel-loader. Спасибо   -  person Ashish Mulaye    schedule 27.01.2017
comment
Отлично, не могли бы вы также опубликовать ответ? Если у других людей такая же проблема? :)   -  person toskv    schedule 27.01.2017
comment
Конечно, добавил ответ, спасибо.   -  person Ashish Mulaye    schedule 01.02.2017


Ответы (1)


Что ж, я столкнулся с этой ошибкой, так как использую es2015 для компиляции родительского модуля. Если вы используете commonjs, вы не столкнетесь с этой проблемой.

Вы можете транспилировать код модуля узла, добавив ниже в конфигурации webpack в karma.config.file.

webpack: {
            resolve: {
                extensions: ['', '.ts', '.js']
            },

            module: {
                loaders: [
                    {
                        // This will transpile Typescript files
                        test: /\.ts(x?)$/,
                        exclude: /node_modules/,
                        loader: "babel-loader" + "?presets[]=es2015" + "!ts-loader",
                    },
                    {
                        // This will transpile ES2015 javascript files
                        test: /\.js(x?)$/,
                        include: [
                            path.resolve(__dirname, "node_modules/<<YOUR MODULE NAME>>")
                        ],
                        loader: "babel-loader" + "?presets[]=es2015"
                    }
                ]
            }
        },

Теперь Webpack будет переносить код JS / TS с помощью babel-loader.

person Ashish Mulaye    schedule 01.02.2017