Angular -cli разные версии на одном компьютере

Я работаю с Angular2 в нескольких проектах. Каждый из этих проектов использует свою версию angular-cli, поэтому мне нужно иметь возможность запускать и компилировать для производства каждый отдельно с правильной версией angular-cli. Когда я установил angular-cli локально, используя save-dev, команды ng не были найдены, поэтому я не могу создать дистрибутив сборки для проекта.

Таким образом, вопрос в том, как я могу иметь несколько версий angular-cli на одном компьютере без глобальной установки (с опцией -g)? Возможно ли запускать команды ng без глобальной установки angular-cli?

Ответ 1

Вы можете использовать NVM, который является Node Version Manager и позволяет работать с различными глобальными модулями в каждой версии Node.

В моем случае я работаю с Node 6.9.5 и Angular2 в одном проекте, а Node 10 и Angular6 - в другом.

Вам нужно только обратить внимание, какая версия установлена, и работать как обычно, как вы.

Ответ 2

вы всегда должны иметь возможность запускать локально для текущей версии каталога ANGULAR CLI, выполнив:

node_modules/.bin/ng <ANY NG COMMAND>

вместо просто

ng <ANY NG COMMAND>

просто убедитесь, что вы запускаете эту команду из корневого каталога, где находится ваш основной package.json (и его каталог node_modules)

Существует команда npm возвращающая node_modules/.bin (который может использоваться для более короткой записи):

'npm bin'/ng <ANY NG COMMAND>

Обратите внимание, что обратные галочки используются вокруг npm bin а не в одинарных кавычках.

Команда ng также добавлена в секцию scripts package.json, поэтому также возможно запускать локальное копирование следующим образом:

npm run ng -- <NG_OPTIONS>

примечание -- флаг терминатора, он должен быть вставлен перед параметрами ng.

Если вы хотите создать новый проект ng, используя определенную версию, но без глобальной установки @angular/cli, вы можете использовать команду npx:

npx @angular/[email protected] new <APP_NAME>

здесь npx временно установит @angular/cli с последней версией @7 и запустит свой исполняемый файл ng с переданными параметрами.

Вы даже можете сделать что-то совершенно бесполезное (потому что локальная копия @angular/cli была установлена с помощью ng new). Запустите ng serve с @6-й версией CLI для @7 нового проекта:

cd <APP_NAME>
npx @angular/[email protected] serve

Ответ 3

В случае, если кто-то другой пришел сюда, как я, с такой же проблемой, я нашел этот метод самым простым. Я установил @angular/[email protected] глобально, так как у меня есть текущий проект, созданный из этой версии (примерно 5.0), но я хотел установить @angular/[email protected]. Я установил npx, а затем создал проект, используя npx

Установите npx frpm npm

npm install -g npx

Создайте новый проект с нужной Cli-версией. Используйте @angular/[email protected] или просто @angular/cli для последней версии.

npx -p @angular/[email protected] ng new my-project

Внутри корневой папки проекта выполните ng -v, чтобы увидеть свою версию. Но я рекомендую использовать префикс npx для каждой команды, которая использует ng, следующим образом.

npx ng -v //or npx ng -version

npx ng generate component my-component

Здесь npx ищет команду ng локально в каталоге ./node_modules/.bin/ и выполняет ее.

Ответ 4

Другое решение заключается в следующем:

  1. Создайте новую папку и создайте экземпляр проекта узла с помощью npm init.
  2. Установите Angular-CLI, связанный с нужной вам версией.
  3. Удалить файл package.json.
  4. Создайте/импортируйте проект Angular, версия которого будет связана с CLI.

Дальнейшее чтение и объяснение здесь

Ответ 5

создать Dockerfile

FROM node:8
WORKDIR /app
RUN npm install -g @angular/[email protected]

построить этот образ докера

docker build . -t angular/ng6.1.1

запустите сборку образа докера на последнем шаге

docker run --rm -it -v $(pwd):/app angular/ng6.1.1 ng new hello-angular

Вы найдете hello-angular проект, созданный в вашей локальной папке, и если вы хотите используйте другую угловую версию, измените угловую /cli версию в файле Docker и создайте новый образ докера для создания нового angular проекта.