ionic-team / ionic-team/ionic-docs

Multi-app projects using yarn in Ionic CI

未关闭
#2,264 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
triage
主要语言
MDX
星标
621
派生
3.2k
平均合并
1 天 2 小时
30 天内合并 PR
86

描述

**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.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。