ionic-team / ionic-team/ionic-docs

Multi-app projects using yarn in Ionic CI

Open
#2,264 0 comments 0 reactions 0 assignees View on GitHub
triage
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.