Пользовательская схема Nx в репозитории не может быть загружена
Я настраиваю репо для пользовательского сборщика Nx и схемы для создания приложения / init. Первоначально я разработал его в папке tools/schematics, и все работало, но решил, что он должен жить в собственном репо. Я обязательно добавил схемы (collection.json) и построители (builders.json) в package.json и настроил два файла. Кажется, там все работает. Я использовал ссылку пряжи, чтобы добавить схемы в мой монорепозиторий nx (поэтому мне не нужно нажимать ее повторно во время тестирования), а затем попытаться добавить приложение с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"
}
1 ответ
Оказывается, я выводил сборки машинописного текста в папку dist. Не делайте этого, иначе будут нарушены все пути для collection.json и любых файлов, используемых для шаблонов. Просто создайте файлы js в тех же местах, что и файлы ts.