@igortelmenko

Как с laravel-mix использовать import js-файла без применения относительных путей?

Приветствую всех!

Сейчас Laravel для сборки js (как и css) использует webpack. Laravel использует webpack не напрямую, а при посредничестве laravel-mix. Это, с одной стороны, - помогает, а другой - накладывает свои ограничения и трудности.

Подключаю внутри одного js-файла другой, используя import:

import Vuetable from 'vuetable-2/src/components/Vuetable' // Путь относительно node_modules
import VuetablePagination from 'vuetable-2/src/components/VuetablePagination'
import CssConfig from '../../VuetableCssConfig' // Путь относительно текущего файла


Пока подключаем то, что лежит в node_modules (как в первых двух строках), все нормально. Но как только нужно подключить свой файл, то приходится прибегать к указанию пути относительно текущего (как в третьей строке). Что не очень, я считаю, красиво и удобно, если файл используется несколькими другими файлами.

Хотелось бы для своих файлов иметь возможность указать путь относительно папкиresources/accets/js:

import CssConfig from 'components/VuetableCssConfig'


Но, если сделать так, то когда запускаем npm run watch (ну или dev, production - не важно), сборщик не видит подключаемого файла. Думаю, что это из-за того, что ищет он в node_modules.

Прочитал ES6 Import Statement Without Relative Paths Using и Laravel 5.5: Custom Webpack Configuration.

Пробовал указать в webpack.min.js:

...
let path = require('path');

mix.webpackConfig({
    resolve: {
        modules: [
            path.resolve('./resources/assets/js'),
            path.resolve('./node_modules')
        ]
    }
});


и еще различные вариации (в том числе с __dirname, как во второй статье). Но результат тот же. Файл при сборке не находится.

Текст ошибки, на всякий случай:


This dependency was not found:

* components/VuetableCssConfig in ./~/babel-loader/lib?{"cacheDirectory":true,"presets":[["es2015",{"modules":false}]]}!./~/vue-loader/lib/selector.js?type=script&index=0!./resources/assets/js/components/earnings/EarningsTable.vue

To install it, you can run: npm install --save components/VuetableCssConfig


Может кто подскажет как сделать так, чтобы webpack искал не только в node_modules, но и в других, нужных, папках. Ну или другой способ, который позволит избежать указания пути относительно текущего js-файла.
  • Вопрос задан
  • 3903 просмотра
Решения вопроса 1
Так может просто использовать алиасы для нужных директорий?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы