存储库中的 Nx 自定义原理图无法加载

Posted

技术标签:

【中文标题】存储库中的 Nx 自定义原理图无法加载【英文标题】:Nx custom schematic in repository not able to load 【发布时间】:2020-04-23 14:26:44 【问题描述】:

我为自定义 Nx 构建器和原理图设置了一个 repo,以构建应用程序/init。最初我在 tools/schematics 文件夹中开发它,一切正常,但决定它应该放在自己的仓库中。我确保将原理图 (collection.json) 和构建器 (builders.json) 添加到 package.json,并设置这两个文件。到那里的一切似乎都在工作。我使用yarn link将原理图添加到我的nx monorepo(所以我在测试时不必反复推送),然后尝试使用nx g nx-name:app添加一个应用程序,但我一直收到一个无法找到的错误原理图的模块。

在发布之前我已经尝试了很多。重命名文件。使用 index.ts。重新安装 node_modules。在纱线中重新链接。

错误:

Cannot find module 'C:\...\monorepo\node_modules\nx-name\src\schematics\application\application'
Require stack:
- C:\...\monorepo\node_modules\@angular-devkit\schematics\tools\export-ref.js
- C:\...\monorepo\node_modules\@angular-devkit\schematics\tools\index.js
- C:\...\monorepo\node_modules\@nrwl\workspace\src\command-line\workspace-schematic.js
- C:\...\monorepo\node_modules\@nrwl\workspace\src\command-line\nx-commands.js
- C:\...\monorepo\node_modules\@nrwl\workspace\index.js
- C:\...\monorepo\node_modules\@nrwl\cli\lib\init-local.js
- C:\...\monorepo\node_modules\@nrwl\cli\bin\nx.js
- C:\...\AppData\Roaming\npm\node_modules\@nrwl\cli\bin\nx.js

我的收藏.json:


    "name": "nx-name",
    "version": "0.0.1",
    "extends": [
        "@nrwl/workspace"
    ],
    "schematics": 
        "init": 
            "factory": "./src/schematics/init/init",
            "schema": "./src/schematics/init/schema.json",
            "description": "Initialize the plugin",
            "aliases": [
                "ng-add"
            ],
            "hidden": true
        ,
        "application": 
            "factory": "./src/schematics/application/application",
            "schema": "./src/schematics/application/schema.json",
            "description": "Create an application",
            "aliases": [
                "app"
            ]
        
    

我的文件夹结构:

- src
    - builders
        - build
            - build.impl.ts
            - schema.json
    - schematics
        - application
            - files
                - a bunch of template files
            - application.ts
            - schema.d.ts
            - schema.json
        - init
            - init.ts
            - schema.d.ts
            - schema.json
- .gitignore
- builders.json
- collection.json
- package.json
- tsconfig.json
- index.ts
- yarn.lock

更新:

将集合工厂指向 dist 文件夹似乎可以部分运行它? JSON 文件更新,但构建器不会运行并从模板生成文件。也许我需要设置一些东西以便它知道构建打字稿源?

添加 package.json 依赖:

"dependencies": 
    "@angular-devkit/architect": "^0.803.21",
    "@angular-devkit/core": "8.3.14",
    "@angular-devkit/schematics": "8.3.14",
    "shelljs": "^0.8.3",
    "typescript": "~3.5.3"
,
"devDependencies": 
    "@nrwl/workspace": "^8.9.0",
    "@types/node": "^13.1.4",
    "@types/shelljs": "^0.8.6"

【问题讨论】:

【参考方案1】:

原来我正在将 typescript 构建输出到 dist 文件夹。不要这样做,否则它会破坏 collection.json 的所有路径以及用于模板的任何文件。只需在与 ts 文件相同的位置构建 js 文件即可。

【讨论】:

以上是关于存储库中的 Nx 自定义原理图无法加载的主要内容,如果未能解决你的问题,请参考以下文章

无法使用iOS Swift在Google地图上加载自定义图块

自定义成员资格提供程序无法加载文件或程序集

无法使用自定义 Spring 引导库中的类

markdown 自定义Nx工作空间原理图,用于构建自定义“状态”库。

Storybook Angular:如何使用导入的自定义库中的模型/接口?

无法从 Spring Boot 应用程序中的自定义 yml 文件加载配置