angular / angular/angular-cli

Library schematic does not support path property

オープン
#16,080 コメント 6 件 リアクション 9 件 担当者 0 名 GitHub で見る
area: @schematics/angular feature feature: insufficient votes
主要言語
TypeScript
スター
27k
フォーク
11.8k
平均マージ
14時間 23分
マージ済み PR(30日)
162

説明

# 🐞 Bug report

### Command (mark with an `x`)

```
- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
- [X] schematics
```

### Is this a regression?

Not as far as I know

### Description

I tried to create a schematic that generates an application and adds a library to it. However, the library schematic does not accept a `path` as parameter and it then attempts to create the library in the folder that contains the application. Specifically, it tries to read the `angular.json` file from the folder containing the application folder (e.g. the folder where the schematic is run).

Note that I expected the `path` property to work, as it's included with most of the other Angular schematics, for example component, module and service.

## 🔬 Minimal Reproduction

A minimal reproduction may be found [in this repo](https://github.com/CobusKruger/AngularProjectMergeIssues).

It also addresses a problem I had when trying to work around this with `applyToSubtree`.

Here is the simplest description I could come up with.

Given this factory:

```typescript
export function createProject(_options: any): Rule {
return (_tree: Tree, _context: SchematicContext) => {
return chain([
externalSchematic('@schematics/angular', 'ng-new', optionsNew),
externalSchematic('@schematics/angular', 'library', optionsLib)
]);
};
}
```

If you execute the schematic in a folder named `/parent/folder` and the app generates in a new folder named app (`/parent/folder/app`), the library schematic searches for the `angular.json` in `/parent/folder` instead of `/parent/folder/app`.

## 🔥 Exception or Error
```
An error occured:
Error: Unable to locate a workspace file for workspace path.
at Object.readWorkspace (C:\dev\scratchpad\scaffolding-tests\node_modules\@angular-devkit\core\src\workspace\core.js:74:19)
at async Object.getWorkspace (C:\dev\scratchpad\scaffolding-tests\node_modules\@schematics\angular\utility\workspace.js:51:27)
at async C:\dev\scratchpad\scaffolding-tests\node_modules\@schematics\angular\library\index.js:153:27
```

## 🌍 Your Environment



_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/

Angular CLI: 8.3.1
Node: 12.12.0
OS: win32 x64
Angular: undefined
...

Package Version
------------------------------------------------------
@angular-devkit/architect 0.803.1 (cli-only)
@angular-devkit/core 8.3.17
@angular-devkit/schematics 8.3.17
@schematics/angular 8.3.1 (cli-only)
@schematics/update 0.803.1 (cli-only)
rxjs 6.4.0
typescript 3.5.3

## Similar issues
https://github.com/angular/angular-cli/issues/17598

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

issue にリンクされている最小再現リポジトリから始め、@schematics/angular/library/index.js の library schematic のエントリポイントと、エラースタックにある utility/workspace.js を追跡します。アプリケーションがサブフォルダーに生成された場合に、パスがどのように処理されるかを確認します。library schematic がパスを受け入れ、workspace エラーなしで生成されたアプリケーションの angular.json を見つけられれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, typescript
領域
cli
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。