Multi-app projects using yarn in Ionic CI

Open
#2,264 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
react
Domain
ci-cd, devops

Research direction

Start with the root and project-specific ionic.config.js files shown in the report, then trace the Appflow dependency_install step that selects npm ci. Compare how the configuration is read for single-app and multi-app projects. Done means the multi-app configuration reliably selects the intended package manager and the dependency installation no longer falls back to npm.

Written by the indexing model from the issue text.

Description

triage

Description:
I have a project which uses yarn instead of npm. The project could be successfully built in Ionic CI. I converted it to multi-app by adding another ionic.config.js-file. After that, I have not been able to build it, even with trying various different options.

The details on using yarn could be found in the documentation and they are verifiably correct. I got yarn to work in the CI with a single application project. I converted the application to monorepo (using yarn workspaces). I ran into build problems with Ionic CI. The details about using yarn with multi-app are not available or are misleading.

The CI prints the error as follows (timestamps removed):

Checking if cordova or capacitor project
Cordova project detected
--------------------------------
--- Step: dependency_install ---
--------------------------------
Installing Dependencies
$ npm ci --quiet --no-optional
▸ npm ERR! The `npm ci` command can only install with an existing package-lock.json or
▸ npm ERR! npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or
▸ npm ERR! later to generate a package-lock.json file, then try again.
▸ npm ERR! A complete log of this run can be found in:
▸ npm ERR!     /root/.npm/_logs/2022-04-12T14_05_38_411Z-debug.log
`npm ci` failed falling back to `npm install`

I had the same issue when building a single package project. I fixed the error earlier by adding "yarn": true to the ionic.config.js.

After going multi-app, the yarn setting is not picked up. I tried the folllowing:

  • add "yarn": true to the root of ./ionic.config.js
  • add "npmClient": "yarn" to the root of ./ionic.config.js
  • add "yarn": true to a project inside projects in ./ionic.config.js
  • add "npmClient": "yarn" to a project inside projects in ./ionic.config.js
  • add "yarn": true to the root of project-specific ./ws/app/ionic.config.js
  • add "npmClient": "yarn" to the root of project-specific ./ws/app/ionic.config.js

Steps to Reproduce:

./ionic.config.js:

  "defaultProject": "app",
  "projects": {
    "app": {
      "name": "Mobile app",
      "integrations": {
        "capacitor": {}
      },
      "type": "react",
      "yarn": true,
      "root": "ws/app",
      "npmClient": "yarn"
    }
  },
  "yarn": true,
  "npmClient": "yarn"
}

./ws/app/ionic.config.js:

{
  "name": "app",
  "integrations": {
    "capacitor": {}
  },
  "type": "react",
  "yarn": true,
  "npmClient": "yarn"
}

Output:

Checking if cordova or capacitor project
Cordova project detected
--------------------------------
--- Step: dependency_install ---
--------------------------------
Installing Dependencies
$ npm ci --quiet --no-optional
▸ npm ERR! The `npm ci` command can only install with an existing package-lock.json or
▸ npm ERR! npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or
▸ npm ERR! later to generate a package-lock.json file, then try again.
▸ npm ERR! A complete log of this run can be found in:
▸ npm ERR!     /root/.npm/_logs/2022-04-12T14_05_38_411Z-debug.log
`npm ci` failed falling back to `npm install`

My ionic info:

Ionic:

   Ionic CLI       : 5.4.16 (/Users/name/workspace/name/maind/dev/maind/node_modules/ionic)
   Ionic Framework : @ionic/react 6.0.13

Capacitor:

   Capacitor CLI   : 3.4.1
   @capacitor/core : 3.4.1

Utility:

   cordova-res : not installed
   native-run  : 1.5.0

System:

   NodeJS : v16.14.2 (/Users/name/.nvm/versions/node/v16.14.2/bin/node)
   npm    : 8.5.0
   OS     : macOS Big Sur

Other Information:

I would like to use Appflow to build and distribute the app to shops.

Dominant language
MDX
Stars
621
Forks
3.2k
Avg merge
1d 2h
Merged PRs (30d)
86

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ionic-team/ionic-docs

All issues in ionic-team/ionic-docs

Similar issues

More DevOps issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.