mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-15 01:54:04 +08:00
feat(@angular/cli): Add update cmd to update angular versions.
This commit is contained in:
parent
f724722914
commit
ac9c5995d2
33
package-lock.json
generated
33
package-lock.json
generated
@ -114,6 +114,31 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@schematics/package-update": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@schematics/package-update/-/package-update-0.0.6.tgz",
|
||||||
|
"integrity": "sha512-H7xoVzBx8QQPNWQiitHD2D1nhVeQPj7UWOxtrLk4Ra2eOWQllKXb461VXcTpdGiABVHz3i4sp/Owq1TMRyE6Mg==",
|
||||||
|
"requires": {
|
||||||
|
"rxjs": "5.5.6",
|
||||||
|
"semver": "5.4.1",
|
||||||
|
"semver-intersect": "1.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"rxjs": {
|
||||||
|
"version": "5.5.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz",
|
||||||
|
"integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==",
|
||||||
|
"requires": {
|
||||||
|
"symbol-observable": "1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symbol-observable": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/common-tags": {
|
"@types/common-tags": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.4.0.tgz",
|
||||||
@ -8564,6 +8589,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
|
||||||
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
|
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
|
||||||
},
|
},
|
||||||
|
"semver-intersect": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-XwQtuo56XVJd4JDV90L9RWjBluxWcnKDlQivIlF+Jvdhqgvk7KAroAqs8aJ/hjQW0wNPSSWDxhJLzYX+dwb13A==",
|
||||||
|
"requires": {
|
||||||
|
"semver": "5.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"send": {
|
"send": {
|
||||||
"version": "0.15.4",
|
"version": "0.15.4",
|
||||||
"resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz",
|
"resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz",
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
"@angular-devkit/core": "~0.0.28",
|
"@angular-devkit/core": "~0.0.28",
|
||||||
"@angular-devkit/schematics": "~0.0.51",
|
"@angular-devkit/schematics": "~0.0.51",
|
||||||
"@schematics/angular": "~0.1.16",
|
"@schematics/angular": "~0.1.16",
|
||||||
|
"@schematics/package-update": "0.0.6",
|
||||||
"autoprefixer": "^7.2.3",
|
"autoprefixer": "^7.2.3",
|
||||||
"cache-loader": "^1.2.0",
|
"cache-loader": "^1.2.0",
|
||||||
"chalk": "~2.2.0",
|
"chalk": "~2.2.0",
|
||||||
|
36
packages/@angular/cli/commands/update.ts
Normal file
36
packages/@angular/cli/commands/update.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
const Command = require('../ember-cli/lib/models/command');
|
||||||
|
import { UpdateTask } from '../tasks/update';
|
||||||
|
|
||||||
|
export interface UpdateOptions {
|
||||||
|
schematic?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const UpdateCommand = Command.extend({
|
||||||
|
name: 'update',
|
||||||
|
description: 'Updates your application.',
|
||||||
|
works: 'everywhere',
|
||||||
|
availableOptions: [
|
||||||
|
{
|
||||||
|
name: 'dry-run',
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
aliases: ['d'],
|
||||||
|
description: 'Run through without making any changes.'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
anonymousOptions: [],
|
||||||
|
|
||||||
|
run: function(commandOptions: any) {
|
||||||
|
const schematic = '@schematics/package-update:all';
|
||||||
|
|
||||||
|
const updateTask = new UpdateTask({
|
||||||
|
ui: this.ui,
|
||||||
|
project: this.project
|
||||||
|
});
|
||||||
|
|
||||||
|
return updateTask.run(schematic, commandOptions);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default UpdateCommand;
|
@ -20,6 +20,7 @@ function loadCommands() {
|
|||||||
'completion': require('../../commands/completion').default,
|
'completion': require('../../commands/completion').default,
|
||||||
'doc': require('../../commands/doc').default,
|
'doc': require('../../commands/doc').default,
|
||||||
'xi18n': require('../../commands/xi18n').default,
|
'xi18n': require('../../commands/xi18n').default,
|
||||||
|
'update': require('../../commands/update').default,
|
||||||
|
|
||||||
// Easter eggs.
|
// Easter eggs.
|
||||||
'make-this-awesome': require('../../commands/easter-egg').default,
|
'make-this-awesome': require('../../commands/easter-egg').default,
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
"@ngtools/json-schema": "1.1.0",
|
"@ngtools/json-schema": "1.1.0",
|
||||||
"@ngtools/webpack": "1.10.0-beta.1",
|
"@ngtools/webpack": "1.10.0-beta.1",
|
||||||
"@schematics/angular": "~0.1.16",
|
"@schematics/angular": "~0.1.16",
|
||||||
|
"@schematics/package-update": "0.0.6",
|
||||||
"autoprefixer": "^7.2.3",
|
"autoprefixer": "^7.2.3",
|
||||||
"cache-loader": "^1.2.0",
|
"cache-loader": "^1.2.0",
|
||||||
"chalk": "~2.2.0",
|
"chalk": "~2.2.0",
|
||||||
|
29
packages/@angular/cli/tasks/update.ts
Normal file
29
packages/@angular/cli/tasks/update.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
const Task = require('../ember-cli/lib/models/task');
|
||||||
|
import SchematicRunTask from './schematic-run';
|
||||||
|
|
||||||
|
export interface UpdateTaskOptions {
|
||||||
|
dryRun: boolean;
|
||||||
|
force: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const UpdateTask: any = Task.extend({
|
||||||
|
run: function(schematic: string, options: UpdateTaskOptions): Promise<any> {
|
||||||
|
const [collectionName, schematicName] = schematic.split(':');
|
||||||
|
|
||||||
|
const schematicRunTask = new SchematicRunTask({
|
||||||
|
ui: this.ui,
|
||||||
|
project: this.project
|
||||||
|
});
|
||||||
|
|
||||||
|
const schematicRunOptions = {
|
||||||
|
taskOptions: {
|
||||||
|
dryRun: options.dryRun
|
||||||
|
},
|
||||||
|
workingDir: this.project.root,
|
||||||
|
collectionName,
|
||||||
|
schematicName
|
||||||
|
};
|
||||||
|
|
||||||
|
return schematicRunTask.run(schematicRunOptions);
|
||||||
|
}
|
||||||
|
});
|
@ -27,7 +27,8 @@ const NODE_PACKAGES = [
|
|||||||
const ANGULAR_PACKAGES = [
|
const ANGULAR_PACKAGES = [
|
||||||
'@angular/compiler',
|
'@angular/compiler',
|
||||||
'@angular/compiler-cli',
|
'@angular/compiler-cli',
|
||||||
'@angular/core'
|
'@angular/core',
|
||||||
|
'@schematics/package-update'
|
||||||
];
|
];
|
||||||
const OPTIONAL_PACKAGES = [
|
const OPTIONAL_PACKAGES = [
|
||||||
'@angular/service-worker',
|
'@angular/service-worker',
|
||||||
|
34
tests/e2e/tests/basic/update.ts
Normal file
34
tests/e2e/tests/basic/update.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { ng } from '../../utils/process';
|
||||||
|
import { readFile } from '../../utils/fs';
|
||||||
|
import { updateJsonFile } from '../../utils/project';
|
||||||
|
|
||||||
|
function updateVersions(obj: any) {
|
||||||
|
const keys = Object.keys(obj);
|
||||||
|
keys.forEach(key => {
|
||||||
|
if (key.startsWith('@angular/')) {
|
||||||
|
obj[key] = '2.0.0';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function () {
|
||||||
|
let origCoreVersion: string;
|
||||||
|
let origCliVersion: string;
|
||||||
|
return updateJsonFile('package.json', obj => {
|
||||||
|
origCoreVersion = obj.dependencies['@angular/core'];
|
||||||
|
origCliVersion = obj.devDependencies['@angular/cli'];
|
||||||
|
updateVersions(obj.dependencies);
|
||||||
|
updateVersions(obj.devDependencies);
|
||||||
|
obj.devDependencies['@angular/cli'] = '1.6.5';
|
||||||
|
})
|
||||||
|
.then(() => ng('update'))
|
||||||
|
.then(() => readFile('package.json'))
|
||||||
|
.then(s => {
|
||||||
|
const obj = JSON.parse(s);
|
||||||
|
const version = obj.dependencies['@angular/core'];
|
||||||
|
const cliVersion = obj.devDependencies['@angular/cli'];
|
||||||
|
if (origCoreVersion === version || origCliVersion === cliVersion) {
|
||||||
|
throw new Error('Versions not updated');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user