Laravel Mix - несколько точек входа, несколько выходов - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть несколько файлов в папке resources/js со структурой, подобной этой:

.
├── commons.js
├── foo
|   ├── foo1.js
|   └── goo2.js
├── bar
|   ├── ram1.js
|   └── ram2.js
├── gopher
|   ├── for1.js
|   └── for2.js

Как мне собрать все эти данные, используя Laravel-Mix, и вывести с той же файловой структурой? Структура файла будет выглядеть, по сути, такой же, но минимизированной. Причина, по которой я хочу это сделать, заключается в том, что некоторые файлы, такие как foo1.js, имеют такие вещи:

$(document).ready(function(){
    // commands that are only for this page
});

, которые будут вызываться на каждой странице, поэтому я импортирую разные файлы для разных страниц. так что только определенные страницы будут выполнять $(document).ready() функций.

1 Ответ

0 голосов
/ 05 апреля 2020

Если это просто javascript mix.scripts() решает вашу проблему, если ваши javascript файлы содержат новый синтаксис, тогда вы должны использовать mix.js()

const mix = require('laravel-mix');

mix.scripts('resources/js/common.js', 'public/js/common.js')
    .scripts('resources/js/foo/foo1.js', 'public/js/foo/foo1.js')
    .scripts('resources/js/foo/goo2.js', 'public/js/foo/goo2.js')
    .scripts('resources/js/bar/ram1.js', 'public/js/foo/ram1.js')
    .scripts('resources/js/bar/ram2.js', 'public/js/foo/ram2.js')
    .scripts('resources/js/gopher/for1.js', 'public/js/foo/for1.js')
    .scripts('resources/js/gopher/for2.js', 'public/js/foo/for2.js')

А для минимизации вы должны запустить npm run production

Редактировать
Вы можете создать переменную для хранения пути к вашим папкам, например

const mix = require('laravel-mix')

const base = 'resources/js/'

const paths = {
    base: base,
    foo: base + 'foo/',
    bar: base + 'bar/',
    gopher: base + 'gopher/',
}

mix.scripts(paths.base + 'common.js', 'public/js/common.js')
    .scripts(paths.foo + 'foo1.js', 'public/js/foo/foo1.js')
    .scripts(paths.foo + 'goo2.js', 'public/js/foo/goo2.js')
    .scripts(paths.bar + 'ram1.js', 'public/js/foo/ram1.js')
    .scripts(paths.bar + 'ram2.js', 'public/js/foo/ram2.js')
    .scripts(paths.gopher + 'for1.js', 'public/js/foo/for1.js')
    .scripts(paths.gopher + 'for2.js', 'public/js/foo/for2.js')
...