Я столкнулся с проблемой, которую не могу побороть около недели.Итак, вот в чем дело
Основное описание
У нас есть Yii2 приложение на основе Базовый шаблон приложения Yii2 .Это главное приложение.Наш репозиторий размещен на Bitbucket .
Также у нас есть приложение Vue.js , которое было установлено с использованием NPM и построено с использованием Webpack .Он также имеет репозиторий на Bitbucket .Это приложение в основном является SPA для части Yii2, и оно было добавлено как субтитр Git в эту часть Yii2.Он находится в каталоге /web/client
.
Мы используем Bitbucket Pipelines для сборки и развертывания.Трубопроводы используют контейнеры Docker.У нас есть собственный репозиторий на Docker Hub, основанный на репозитории php: 7.2.9 (основанном на Debian).Таким образом, у нас есть полный доступ к нему, и мы можем изменить или перенастроить его.
Вот несколько упрощенных процессов развертывания:
- Bitbucket устанавливает среду
- Выполните
git submodule update --init --recursive
которая клонирует часть приложения Vue - Установка части приложения Yii2 с помощью Composer
- Установка части приложения Vue.js с использованием NPM
- Удаление временных файлов и отправка на сервер
Основной выпуск
Выпуск происходит на 4-м шаге.Когда нам нужно установить Vue.js часть приложения.Проблема в том, что корневой каталог является корневым каталогом проекта.Предположим, что это /
.В нем невозможно запустить npm install
и npm run build
.
Также мы не можем запустить что-то вроде этого: cd ./web/client/
, npm install
, npm run build
, cd ../../
, потому что это контейнер Docker.Поэтому я решил, что могу указать некоторые параметры для команды npm.
Я нашел пару решений, но все они делают одно и то же, как npm install --prefix ./web/client
.Он не работает и имеет ошибку ENOLOCAL .Также я не нашел ничего полезного в логах npm.
Если я попробую npm --prefix ./web/client install ./web/client
, то все идет хорошо.Но /web/client
теперь содержит некоторые странные файлы, которые, вероятно, должны быть расположены в /web/client/node_modules/.bin
Так что главный вопрос, как запустить npm install
и npm run build
в текущем рабочем каталоге, но создать приложение в другом каталоге (в моем случае /web/client
)?