ionic-team / ionic-team/ionic-docs
Multi-app projects using yarn in Ionic CI
- Dominant language
- MDX
- Stars
- 621
- Forks
- 3.2k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 86
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": 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.
Contributor guide
Assessment
This issue has not been assessed yet.