1

我正在尝试使用Angular 8 中的Workspace创建一些应用程序,我想知道是否有可能拥有这样的文件夹结构:

|/Myproj
       |/Workspace
       |
       |/Application_1
       |
       |/Application_2

在教程的任何地方,带有应用程序的文件夹都在里面,Workspace/projects但出于某种原因,我希望将它放在同一级别,因此直接在Myproj文件夹内的工作区旁边。我试图更新配置中的所有路径,Workspace/angular.json例如。从这个"root": "projects/Application_1",到这个"root": "../Application_1",。但是在构建 ( ng build --project=Application_1) 时,我一直有一些错误,例如。An unhandled exception occurred: Cannot locate node_modules directory..

我想知道这是否可能?或者我不应该浪费我的时间,因为这就是它的工作方式,没有办法改变它。我也试图用NRWL找到一些解决方案,但没有任何成功。

4

1 回答 1

1

更新

如果不确切了解您为什么要移动事物,我不相信您的方法会奏效。有关节点如何定位 node_modules 目录,请参阅此答案。如果在根目录中找不到它,它将搜索父目录,而不是子目录。听起来您想在 Workspace(子目录)中有 angular.json 和 node_modules,这是有问题的。

如果您不喜欢当前嵌套的深度,您是否可以将整个 Angular 工作区向上移动一级(基本上摆脱 Workspace 并让 Myproj 成为新的工作区根)?

简单地将项目移动到工作区中的不同目录的旧答案

NX 用户在这里。这绝对是可能的,但我不建议你这样做。至少在apps和之间有一个层次的组织是很有价值的libs,尤其是随着你的 monorepo 的增长。

但是,如果您打算这样做,我在下面列出了您需要在 NX monorepo 中更新的文件和属性。对于普通的角度工作空间,这个想法是相同的,您需要修改的文件路径不仅仅是angular.json.

注意:不要用相对路径替换绝对路径。apps/my-app变成my-appNOT../my-app

my-app 的 angular.json 配置

  • 更新以下属性 的绝对路径:
    • root
    • sourceRoot
    • architect.build.options.outputPath
    • architect.build.options.index
    • architect.build.options.main
    • architect.build.options.polyfills
    • architect.build.options.tsConfig
    • architect.build.options.assets
    • architect.build.options.styles
    • architect.build.configurations.production.fileReplacements.replace
    • architect.build.configurations.production.fileReplacements.with
    • architect.lint.options.tsConfig
    • architect.lint.options.exclude
    • architect.test.options.jestConfig
    • architect.test.options.tsConfig
    • architect.test.options.setupFile

我的应用程序/jest.config.js

  • 更新以下属性的相对路径:
    • preset
    • coverageDirectory

我的应用程序/tsconfig.app.json

  • 更新以下属性的相对路径:
    • compilerOptions.outDir

我的应用程序/tsconfig.json

  • 更新以下属性的相对路径:
    • extends

我的应用程序/tsconfig.spec.json

  • 更新以下属性的相对路径:
    • compilerOptions.outDir

我的应用程序/tslint.json

  • 更新以下属性的相对路径:
    • extends
于 2020-01-02T13:33:19.163 回答