Multi-app projects using yarn in Ionic CI
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
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
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": trueto the root of./ionic.config.js - add
"npmClient": "yarn"to the root of./ionic.config.js - add
"yarn": trueto a project insideprojectsin./ionic.config.js - add
"npmClient": "yarn"to a project insideprojectsin./ionic.config.js - add
"yarn": trueto 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ionic-team/ionic-docs
-
content
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
ionic-team/ionic-docs#4705 ·
-
content package: angular
Difficulty 2/5 Half a day Newbie friendliness 78/100
ionic-team/ionic-docs#4702 ·
-
triage
Difficulty 1/5 Under an hour Newbie friendliness 80/100
ionic-team/ionic-docs#4546 ·
-
content: broken link Opencontent
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ionic-team/ionic-docs#4381 · 2 comments ·
-
triage
Difficulty 1/5 Under an hour Newbie friendliness 72/100
ionic-team/ionic-docs#3639 ·
All issues in ionic-team/ionic-docs
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
danielmiessler/LifeOS#2215 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
sympozium-ai/sympozium#627 ·