版本
节点--版本 v8.11.3
npm --版本 6.4.1
ng --version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 6.1.1
Node: 8.11.3
OS: darwin x64
Angular: 6.1.10
... common, core, router
Package Version
-------------------------------------------------------------
@angular-devkit/architect 0.7.5
@angular-devkit/build-angular 0.7.5
@angular-devkit/build-optimizer 0.7.5
@angular-devkit/build-webpack 0.7.5
@angular-devkit/core 0.6.8
@angular-devkit/schematics 0.7.1
@angular/animations 6.1.0
@angular/cdk 6.4.7
@angular/cli 6.1.1
@angular/compiler 6.1.0
@angular/compiler-cli 6.1.0
@angular/forms 6.1.0
@angular/http 6.1.0
@angular/language-service 6.1.0
@angular/platform-browser 6.1.0
@angular/platform-browser-dynamic 6.1.0
@ngtools/webpack 6.1.5
@schematics/angular 0.7.1
@schematics/update 0.7.1
rxjs 6.3.3
typescript 2.9.2
webpack 4.9.2
重现步骤
我有一个私人项目,所以我无法分享回购,所以提前抱歉。我有一个 Angular 项目,我添加了原理图支持,因此我可以使用ng update
. 所以我有一个带有migration.json
文件的原理图文件夹:
{
"$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
"schematics": {
"migration01": {
"version": "1.0.0-nav-menu-with-migration.3",
"description": "Update",
"factory": "./src/ng-update/index"
}
}
}
tsconfig.schematics.json
:
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"declaration": true,
"sourceMap": true,
"lib": [
"dom",
"es2017",
"esnext.asynciterable"
]
},
"exclude": [
"**/files/*.ts",
"**/*.spec.ts"
]
}
tsconfig.schematics.spec.json
:
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"moduleResolution": "node",
"types": [
"jasmine",
"node"
],
"lib": [
"es2017",
"dom"
],
"declaration": false
},
"include": [
"./spec/**/*.spec.ts"
]
}
jasmine.json
:
{
"spec_dir": "projects/nav-menu/schematics/spec",
"spec_files": [
"**/*.spec.js"
],
"helpers": [
"projects/nav-menu/schematics/spec/helpers/**/*.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
我有一个ng-update
文件夹index.ts
:
import { Rule, SchematicContext, SchematicsException, Tree } from "@angular-devkit/schematics";
export default function(): Rule {
return (tree: Tree, context: SchematicContext) => {
context.logger.warn("it's happening!");
const pkgPath = "/package.json";
const buffer = tree.read(pkgPath);
if (buffer == null) {
throw new SchematicsException("Could not read package.json");
}
const content = buffer.toString();
const pkg = JSON.parse(content);
if (pkg === null || typeof pkg !== "object" || Array.isArray(pkg)) {
throw new SchematicsException("Error reading package.json");
}
if (!pkg.dependencies) {
pkg.dependencies = {};
}
if (pkg.dependencies["@solarwinds/nav-menu-with-migration"]) {
pkg.dependencies["ngx-perfect-scrollbar"] = `^7.0.0`;
pkg.dependencies["ngx-device-detector"] = null;
tree.overwrite(pkgPath, JSON.stringify(pkg, null, 2));
}
return tree;
};
}
package.json
对于我的导航菜单项目:
{
"name": "@solarwinds/nav-menu-with-migration",
"version": "0.0.1",
"peerDependencies": {
"css-element-queries": "~0.4.0",
"ngx-perfect-scrollbar": "^7.0.0",
"web-animations-js": "^2.3.1",
"@angular/cdk": "^6.0.2",
"@angular/common": "^6.0.7",
"@angular/core": "^6.0.7",
"@angular/router": "^6.0.7",
"@solarwinds/nova-xui": "6.3.0-alpha.10.1322",
"rxjs": "^6.0.0",
"zone.js": "^0.8.26"
},
"schematics": "./schematics/collection.json",
"ng-update": {
"migrations": "./schematics/migration.json"
}
}
发布包后,我会尝试nav-menu
在使用此包的其他应用程序之一中进行更新。我尝试了许多不同的命令,但似乎没有一个可以migration.json
在ng update
. 所以我试过:
ng update @solarwinds/nav-menu-with-migration --to=1.0.0-nav-menu-with-migration.3 --migrate-only
我收到以下错误:Incompatible peer dependencies found. See above
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "@angular/cdk" (requires "6.3.3", would install "6.4.7").
Package "@angular/http" has an incompatible peer dependency to "@angular/core" (requires "6.1.0" (extended), wouldinstall "6.1.10").
Package "@angular/platform-browser-dynamic" has an incompatible peer dependency to "@angular/common" (requires "6.1.0" (extended), would install "6.1.10").
Package "@angular/router" has an incompatible peer dependency to "@angular/platform-browser" (requires "6.1.10", would install "6.1.0")
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "@angular/router" (requires "6.1.4" (extended), would install "6.1.10").
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "rxjs" (requires "6.2.2", would install "6.3.3").
Incompatible peer dependencies found. See above.
所以我尝试使用--force
标志,我确实package.json
更新了我的文件,但我从来没有看到我的migration.json
原理图运行。
g update @solarwinds/nav-menu-with-migration --to=1.0.0-nav-menu-with-migration.3 --force --migrate-only
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "rxjs" (requires "6.2.2", would install "6.3.3").
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "@angular/cdk" (requires "6.3.3", would install "6.4.7").
Package "@angular/platform-browser-dynamic" has an incompatible peer dependency to "@angular/core" (requires "6.1.0" (extended), would install "6.1.10").
Package "@angular/router" has an incompatible peer dependency to "@angular/platform-browser" (requires "6.1.10", would install "6.1.0")
Package "@solarwinds/nova-xui" has an incompatible peer dependency to "@angular/router" (requires "6.1.4" (extended), would install "6.1.10").
Package "@angular/platform-browser-dynamic" has an incompatible peer dependency to "@angular/common" (requires "6.1.0" (extended), would install "6.1.10").
Updating package.json with dependency rxjs @ "6.3.3" (was "6.2.2")...
Updating package.json with dependency @angular/cdk @ "6.4.7" (was "6.4.3")...
Updating package.json with dependency @angular/core @ "6.1.10" (was "6.1.0")...
Updating package.json with dependency @angular/router @ "6.1.10" (was "6.1.0")...
Updating package.json with dependency @angular/common @ "6.1.10" (was "6.1.0")...
我不确定为什么我的ng update
命令没有运行。我想测试我的migration.json
原理图,所以我指出我collection.json
的指向,ng-update/index
这样当我运行时,ng add @solarwinds/nav-menu-with-migration@1.0.0-nav-menu-with-migration.3
我可以查看我的ng-update
代码是否工作并且它是否按预期工作(注意:这只是为了测试目的,我不打算用来ng add
运行迁移)。这是输出:
TREHMAN-MB:web-application-seed tanzeel.rehman$ ng add @solarwinds/nav-menu-with-migration@1.0.0-nav-menu-with-migration.3Installing packages for tooling via npm.
npm WARN @solarwinds/nav-menu@2.2.0 requires a peer of @solarwinds/nova-xui@6.3.0-alpha.10.1322 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/animations@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/cdk@6.3.3 but none is installed. You must install peerdependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/common@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/compiler@6.1.4 but none is installed. You must installpeer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/core@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/forms@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/http@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/platform-browser@6.1.4 but none is installed. You mustinstall peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/platform-browser-dynamic@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nova-xui@6.3.0-alpha.12.1825 requires a peer of @angular/router@6.1.4 but none is installed. You must install peer dependencies yourself.
npm WARN tsickle@0.30.0 requires a peer of typescript@>=2.4.2 <2.9 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nav-menu-with-migration@1.0.0-nav-menu-with-migration.3 requires a peer of ngx-perfect-scrollbar@^7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @solarwinds/nav-menu-with-migration@1.0.0-nav-menu-with-migration.3 requires a peer of @solarwinds/nova-xui@6.3.0-alpha.10.1322 but none is installed. You must install peer dependencies yourself.
+ @solarwinds/nav-menu-with-migration@1.0.0-nav-menu-with-migration.3
updated 1 package and audited 40530 packages in 16.964s
found 10 vulnerabilities (3 low, 5 moderate, 2 high)
run `npm audit fix` to fix them, or `npm audit` for details
Installed packages for tooling via npm.
it's happening!
UPDATE package.json (4250 bytes)
有人可以在这里帮我吗ng update
。拜托了,先谢谢了!!