如何将 ember 2.7 升级到 3.28?
How can I upgrade ember 2.7 to 3.28?
我的团队继承了一个旧的(2017 年左右)基于 ember.js 的项目,我们需要选择是用 vue 重新制作项目,还是只升级 ember 版本。
该项目使用节点 6.16,这里是依赖项:
// package.json
{
"version": "1.0.0",
"private": true,
"engines": {
"node": ">= 0.10.0"
},
"author": "",
"license": "MIT",
"devDependencies": {
"broccoli-asset-rev": "^2.2.0",
"chart.js": "2.2.1",
"ember-ajax": "0.7.1",
"ember-browserify": "1.1.13",
"ember-cli": "2.4.2",
"ember-cli-app-version": "^1.0.0",
"ember-cli-autoprefixer": "0.6.0",
"ember-cli-babel": "^5.1.5",
"ember-cli-chart": "3.1.0",
"ember-cli-chartjs": "2.3.1",
"ember-cli-dependency-checker": "^1.2.0",
"ember-cli-htmlbars": "^1.3.5",
"ember-cli-htmlbars-inline-precompile": "^0.3.1",
"ember-cli-inject-live-reload": "^1.10.2",
"ember-cli-moment-shim": "2.2.0",
"ember-cli-qunit": "^1.2.1",
"ember-cli-release": "0.2.8",
"ember-cli-sass": "5.3.0",
"ember-cli-spinjs": "1.0.8",
"ember-cli-sri": "^2.1.0",
"ember-cli-uglify": "^1.2.0",
"ember-cookies": "0.0.9",
"ember-data": "^2.18.5",
"ember-disable-proxy-controllers": "^1.0.2",
"ember-export-application-global": "^1.0.4",
"ember-load-initializers": "^0.5.0",
"ember-models-table": "1.11.0",
"ember-moment": "7.0.0-beta.3",
"ember-pikaday": "2.1.0",
"ember-power-select": "1.0.0-beta.14",
"ember-resolver": "^2.0.3",
"ember-rl-year-picker": "^0.2.0",
"liquid-fire": "0.24.0",
"loader.js": "^4.0.0",
"semantic-ui-ember": "2.0.0-beta.0"
},
"dependencies": {
"ember-colpick": "^0.6.2",
"findup": "^0.1.5",
"semantic-ui-icon": "^2.3.3"
}
}
// bower.json
{
"dependencies": {
"ember": "~2.7",
"ember-cli-shims": "0.1.0",
"ember-cli-test-loader": "0.2.2",
"ember-qunit-notifications": "0.1.0",
"hammerjs": "^2.0.6",
"matchMedia": "0.2.0",
"semantic-ui": "^2.2.4",
"chartjs": "2.1.6",
"spin.js": "^2.3.2",
"mjolnic-bootstrap-colorpicker": "^2.3.6",
"colpick": "2.0.2",
"pikaday": "^1.4.0"
},
"devDependencies": {
"js-cookie": "^2.1.2"
}
}
是的,该项目使用 bower 和 npm,不知道为什么。
知道这个,我有一些问题:
npm 的 ember-cli 与 bower 的 ember 版本不同,这正常吗?
您认为甚至可以将 ember 从 2.7(或 2.4.2??)升级到 3.28(即 LTS)?
我们尝试使用著名的 ember update
和 ember-cli-update
但似乎我们的 ember-cli 版本 (2.4.2) 不支持它。我们甚至找不到支持它的版本。
如果可以的话,怎么做?
是否可以摆脱凉亭?升级前还是升级后?
项目比较大,尽量避免用vuejs重新制作。
并回答“为什么要升级 ember ?”,嗯,节点 6 很糟糕。我们至少需要节点 12
每个版本都可以升级!但最安全的方法可能是从 LTS 遍历到 LTS。
所以,2.4 -> 2.8 -> 2.12 -> 2.16 -> 2.18 -> 3.4 -> 3.8 -> 3.12 -> 3.16 > 3.20 -> 3.24 -> 3.28
More information about Releases here
这听起来工作量很大,但这就是跟上升级的步伐如此重要的原因。 (实际上可能没有那么多工作,具体取决于您的应用程序的大小,以及您对新功能分心的程度)
每一步的总体策略是:
- 有一个好的测试套件
- 循环:
- 确保在 运行 测试
时记录了 0 个弃用
- 在支持您的 ember 版本的同时,将所有库升级到它们可以达到的最高水平(这需要进行一些探索,但幸运的是,您没有很多 non-default 部门)
- 将您的 ember-source 版本升级到下一个 LTS
尽管离开凉亭有点 non-standard(因为这是 one-time 的事情),但有一些博客文章可以帮助您:
2 倍发布博文:https://blog.emberjs.com/tag/version-2-x
3 倍发布博文:https://blog.emberjs.com/tag/version-3-x
通过阅读 2-x 博客文章,我找到了这个关于离开凉亭的迁移指南:https://github.com/ember-cli/ember-cli/releases/tag/v2.13.0-beta.1
- 我可能会先尝试这样做,因为您可以执行上述的漂亮升级循环
但是,由于您正在考虑 Vue 中的 re-writing,因此在 Ember 4.2 中仅 re-write 可能更有意义——因为很多概念都转移了 (如果您不熟悉最新的 ember,我极力推荐 the tutorial,因为它很难登顶。
有关功能的完整列表,请访问此应用程序:https://upgrade.emberjs.com/changes?fromVersion=2.4&toVersion=4.2
(它说 运行 一些命令,我不会执行这些命令中的任何一个,早在 2.4 时)
为了在升级过程中获得更好的支持,我建议加入 ember 的 discord 服务器:https://discord.gg/emberjs
我的团队继承了一个旧的(2017 年左右)基于 ember.js 的项目,我们需要选择是用 vue 重新制作项目,还是只升级 ember 版本。
该项目使用节点 6.16,这里是依赖项:
// package.json
{
"version": "1.0.0",
"private": true,
"engines": {
"node": ">= 0.10.0"
},
"author": "",
"license": "MIT",
"devDependencies": {
"broccoli-asset-rev": "^2.2.0",
"chart.js": "2.2.1",
"ember-ajax": "0.7.1",
"ember-browserify": "1.1.13",
"ember-cli": "2.4.2",
"ember-cli-app-version": "^1.0.0",
"ember-cli-autoprefixer": "0.6.0",
"ember-cli-babel": "^5.1.5",
"ember-cli-chart": "3.1.0",
"ember-cli-chartjs": "2.3.1",
"ember-cli-dependency-checker": "^1.2.0",
"ember-cli-htmlbars": "^1.3.5",
"ember-cli-htmlbars-inline-precompile": "^0.3.1",
"ember-cli-inject-live-reload": "^1.10.2",
"ember-cli-moment-shim": "2.2.0",
"ember-cli-qunit": "^1.2.1",
"ember-cli-release": "0.2.8",
"ember-cli-sass": "5.3.0",
"ember-cli-spinjs": "1.0.8",
"ember-cli-sri": "^2.1.0",
"ember-cli-uglify": "^1.2.0",
"ember-cookies": "0.0.9",
"ember-data": "^2.18.5",
"ember-disable-proxy-controllers": "^1.0.2",
"ember-export-application-global": "^1.0.4",
"ember-load-initializers": "^0.5.0",
"ember-models-table": "1.11.0",
"ember-moment": "7.0.0-beta.3",
"ember-pikaday": "2.1.0",
"ember-power-select": "1.0.0-beta.14",
"ember-resolver": "^2.0.3",
"ember-rl-year-picker": "^0.2.0",
"liquid-fire": "0.24.0",
"loader.js": "^4.0.0",
"semantic-ui-ember": "2.0.0-beta.0"
},
"dependencies": {
"ember-colpick": "^0.6.2",
"findup": "^0.1.5",
"semantic-ui-icon": "^2.3.3"
}
}
// bower.json
{
"dependencies": {
"ember": "~2.7",
"ember-cli-shims": "0.1.0",
"ember-cli-test-loader": "0.2.2",
"ember-qunit-notifications": "0.1.0",
"hammerjs": "^2.0.6",
"matchMedia": "0.2.0",
"semantic-ui": "^2.2.4",
"chartjs": "2.1.6",
"spin.js": "^2.3.2",
"mjolnic-bootstrap-colorpicker": "^2.3.6",
"colpick": "2.0.2",
"pikaday": "^1.4.0"
},
"devDependencies": {
"js-cookie": "^2.1.2"
}
}
是的,该项目使用 bower 和 npm,不知道为什么。
知道这个,我有一些问题:
npm 的 ember-cli 与 bower 的 ember 版本不同,这正常吗?
您认为甚至可以将 ember 从 2.7(或 2.4.2??)升级到 3.28(即 LTS)? 我们尝试使用著名的
ember update
和ember-cli-update
但似乎我们的 ember-cli 版本 (2.4.2) 不支持它。我们甚至找不到支持它的版本。如果可以的话,怎么做?
是否可以摆脱凉亭?升级前还是升级后?
项目比较大,尽量避免用vuejs重新制作。
并回答“为什么要升级 ember ?”,嗯,节点 6 很糟糕。我们至少需要节点 12
每个版本都可以升级!但最安全的方法可能是从 LTS 遍历到 LTS。
所以,2.4 -> 2.8 -> 2.12 -> 2.16 -> 2.18 -> 3.4 -> 3.8 -> 3.12 -> 3.16 > 3.20 -> 3.24 -> 3.28
More information about Releases here
这听起来工作量很大,但这就是跟上升级的步伐如此重要的原因。 (实际上可能没有那么多工作,具体取决于您的应用程序的大小,以及您对新功能分心的程度)
每一步的总体策略是:
- 有一个好的测试套件
- 循环:
- 确保在 运行 测试 时记录了 0 个弃用
- 在支持您的 ember 版本的同时,将所有库升级到它们可以达到的最高水平(这需要进行一些探索,但幸运的是,您没有很多 non-default 部门)
- 将您的 ember-source 版本升级到下一个 LTS
尽管离开凉亭有点 non-standard(因为这是 one-time 的事情),但有一些博客文章可以帮助您:
2 倍发布博文:https://blog.emberjs.com/tag/version-2-x 3 倍发布博文:https://blog.emberjs.com/tag/version-3-x
通过阅读 2-x 博客文章,我找到了这个关于离开凉亭的迁移指南:https://github.com/ember-cli/ember-cli/releases/tag/v2.13.0-beta.1
- 我可能会先尝试这样做,因为您可以执行上述的漂亮升级循环
但是,由于您正在考虑 Vue 中的 re-writing,因此在 Ember 4.2 中仅 re-write 可能更有意义——因为很多概念都转移了 (如果您不熟悉最新的 ember,我极力推荐 the tutorial,因为它很难登顶。
有关功能的完整列表,请访问此应用程序:https://upgrade.emberjs.com/changes?fromVersion=2.4&toVersion=4.2
(它说 运行 一些命令,我不会执行这些命令中的任何一个,早在 2.4 时)
为了在升级过程中获得更好的支持,我建议加入 ember 的 discord 服务器:https://discord.gg/emberjs