我为自定义Nx构建器和原理图设置了一个仓库,以构建应用程序/初始化。最初,我是在tools / schematics文件夹中开发它的,并且一切正常,但是决定将其保存在自己的仓库中。我确保将原理图(collection.json)和构建器(builders.json)添加到package.json,并设置两个文件。到目前为止,似乎一切正常。我使用yarn链接将原理图添加到我的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
我的collection.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 deps:
"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"
}
答案 0 :(得分:0)
结果是我将打字稿版本输出到dist文件夹。不要这样做,否则它会破坏collection.json的所有路径以及用于模板的所有文件。只需在与ts文件相同的位置构建js文件即可。