Изменения в package.json для перехода с Angular 2 на 4

В настоящее время приложение находится на Angular 2.0.0. Какие пакеты или зависимости необходимо изменить для совместимости с Angular 4? До сих пор я изменил следующее,

"dependencies": {
"@angular/common": "4.0.0",
"@angular/compiler": "4.0.0",
"@angular/core": "4.0.0",
"@angular/forms": "4.0.0",
"@angular/http": "4.0.0",
"@angular/platform-browser": "4.0.0",
"@angular/platform-browser-dynamic": "4.0.0",
"@angular/router": "4.0.0",
"@angular/router-deprecated": "2.0.0-rc.2",
"@angular/upgrade": "4.0.0",
"angular2-toaster": "2.0.0",
"rxjs": "^5.0.1",
"typescript": "^2.1.5",
"zone.js": "^0.8.4"
}

Есть ли какие-либо другие пакеты/зависимости, которые необходимо изменить?

Должен ли я внести изменения в tsconfig.json?

{


 "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": [
      "es5",
      "es2015",
      "es2017",
      "dom",
      "scripthost"
    ],
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "noEmitHelpers": true,
    "allowNonTsExtensions" : true
  },
  "exclude": [
    "node_modules",
    "typings/main.d.ts",
    "typings/main"
  ],
  "filesGlob": [
    "./src/**/*.ts",
    "./test/**/*.ts",
    "!./node_modules/**/*.ts",
    "src/custom_typings.d.ts",
    "typings/browser.d.ts"
  ],
  "awesomeTypescriptLoaderOptions": {
    "resolveGlobs": true,
    "forkChecker": true
  },
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": { "rewriteTsconfig": false }
}

person user3344978    schedule 28.03.2017    source источник


Ответы (6)


Обычно я использую файлы здесь для руководства: https://github.com/angular/quickstart

Он предоставляет набор базовых исходных файлов, необходимых для приложения, и обычно обновляется с помощью Angular, поскольку он является частью документации Angular на angular.io.

person DeborahK    schedule 28.03.2017

Существует онлайн-приложение, которое поможет вам в (простом) процессе обновления 2 до 4: https://angular-update-guide.firebaseapp.com/

person mariogl    schedule 03.04.2017
comment
Я прошел через этот процесс, и шаги по миграции мне не помогли. я все еще ошибаюсь - person user3344978; 03.04.2017

Вот хорошее видео на YouTube, в котором объясняется, как Мигрировать с Angular 2 на Angular 4

Резюмирую сказанное в видео. Переход с Angular 2 на Angular 4 — это трехэтапный процесс.

  1. Удалите старую папку «node_modules», поскольку в ней есть ссылки на Angular 2.X.

  2. Измените все версии @Angular с 2.X на 4.X и выполните «установку npm».

  3. Вы можете получить сообщения о том, что эта версия несовместима с этой версией. Исправьте это, ошибка говорит вам. Посмотрите видео, как исправляются проблемы со сверстниками.

  4. Запустите проект и проведите тщательный тест.

введите здесь описание изображения

person Shivprasad Koirala    schedule 20.05.2017

Вам не нужно вносить изменения в ts.config. Изменения, внесенные в package.json, кажутся правильными.

Пара моментов:

  • Я думаю, что «машинопись» должна быть в «devDependencies», так как вам это не понадобится в режиме prod.
  • Я рекомендую удалить "^" из всех ваших зависимостей b.c. точную версию лучше заблокировать
  • Я также настоятельно рекомендую использовать "shrinkwrap", чтобы избежать свободных зависимостей внутри ваших зависимостей.

Чтобы установить последнюю версию Angular, удалите/переместите текущую папку node_modules. Затем:

npm cache clean
npm install

Для справки см. раздел «Обновление до 4.0.0» http://angularjs.blogspot.com/2017/03/angular-400-now-available.html

person bakerhumadi    schedule 28.03.2017

Мое решение в этих ситуациях состоит в том, чтобы использовать angular-cli для создания нового проекта в той версии angular, которую я хочу (почти всегда самая новая версия для меня), а затем добавить другие необходимые мне зависимости, позволяя диспетчеру пакетов разобраться, что версию, которую я должен иметь, или отстаиваю свое мнение об этом с помощью параметров команды моего менеджера пакетов.

Это позволяет мне быстро создать библиотеку поставщиков и быстро проверить, что все они будут загружаться без ошибок, используя «приложение работает!» проект, который предоставляет cli.

После завершения этого процесса у вас должен быть файл package.json, который вы можете просто вырезать и вставить в свой проект.

Еще одна вещь, на которую стоит обратить внимание, если вы еще не... Пряжа. Yarn — новый менеджер пакетов от наших друзей на facebook. Он новее и, следовательно, менее протестирован, чем npm, но у него есть несколько действительно хороших функций, и, по крайней мере, в моей настройке он работает примерно в 20 раз быстрее, чем npm. Другой комментатор упомянул термоусадочную пленку, которая является отличным инструментом, поэтому я подумал, что просто укажу другое решение в этой области.

person IndyWill    schedule 29.03.2017
comment
Должен ли я преобразовать мой текущий проект для запуска с помощью cli, чтобы получить правильные версии? Или мне следует создать совершенно новый тестовый проект? - person user3344978; 03.04.2017
comment
Обычно я просто создаю новый тестовый проект, чтобы определить правильное сочетание версий зависимостей. - person IndyWill; 03.04.2017
comment
Позвольте мне попробовать это тоже. При добавочном изменении вручную я получаю следующую ошибку: 4.0.0-beta.6 @angular\core\src\change_detection\differs\iterable_differs.d.ts:14: TS2304 Cannot find name 'Iterable'. Я пытался следовать предложениям, приведенным в этот вопрос о stackoverflow, но ни один из них не помог. - person user3344978; 04.04.2017
comment
Если по какой-то причине это не вариант, я бы определенно обновился до последней версии Angular (в настоящее время 4.0.1). - person IndyWill; 05.04.2017
comment
Обновление Typings до 1.x и добавление ссылки на index.d.ts в main.ts помогло мне - person user3344978; 05.04.2017

Вам не нужно вносить изменения в файл package.json вручную, вы можете запустить эту команду, если вы используете Windows

npm cache clean

npm install @angular/common@next @angular/compiler@next @angular/compiler-cli@next @angular/core@next @angular/forms@next @angular/http@next @angular/platform-browser@next @angular/platform-browser-dynamic@next @angular/platform-server@next @angular/router@next @angular/animations@next --save

Это поможет

После того, как вы прокомментируете

вы должны обновить свой машинописный текст, а также можете попробовать изменить его в tsconfig.json

{
    "compilerOptions": {
        "target": "es5",
        "lib": ["es2016", "dom"] //or es6 instead of es2016(es7)
    }
}
person Rahul Singh    schedule 29.03.2017
comment
Я использовал команду Windows для обновления пакетов, но вижу ошибки в vendor.ts и main.browser.ts ERROR in ./src/vendor.ts Module build failed: Error: Debug Failure. False expression: File has unknown extension. ERROR in [default] node_modules/@angular/core/src/change_detection/differs/iterable_differs.d.ts:15:47 Cannot find name 'Iterable'. - person user3344978; 30.03.2017
comment
@user3344978 user3344978 У вас установлен последний Typescript, поскольку Angular4 использует 2.1. - person Rahul Singh; 30.03.2017
comment
Я пробовал с typescript@lastest, а также с [email protected]. Но обе версии выдали мне эту ошибку /node_modules/bootstrap-loader/loader.js' has unsupported extension. The only supported extensions are '.ts', '.tsx', '.d.ts'. , - person user3344978; 30.03.2017