Как запустить проект Angular2 с минимальными требуемыми файлами с помощью npm?

Я следил за быстрым стартом Angular2 и установил необходимые библиотеки с помощью диспетчера пакетов Node: https://angular.io/guide/quickstart

создал package.json:

{
  "name": "angular2-quickstart",
  "version": "1.0.0",
  "scripts": {
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "lite": "lite-server",
    "start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
  },
  "license": "ISC",
  "dependencies": {
    "angular2": "2.0.0-beta.0",
    "systemjs": "0.19.6",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.3",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.0",
    "zone.js": "0.5.10"
  },
  "devDependencies": {
    "concurrently": "^1.0.0",
    "lite-server": "^1.3.1",
    "typescript": "^1.7.3"
  }

Выполненная

npm install

Но команда npm install загружает большое количество файлов, например "node_modules\angular2" - 32 МБ (возможно, исходные источники и другие материалы включены?), allthough index.html требует лишь немногих из них, и, например, angular2.dev.js - только 1 МБ:

<!-- 1. Load libraries -->
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>

Мне бы хотелось, чтобы этот проект quickstart не занимал столько места на диске. Есть ли способ сказать npm для загрузки только "пучков" или сведенных к минимуму версий, или есть способ оптимизировать каталог node_modules при упаковке для производства?

Ответы

Ответ 1

Вы можете использовать версии cdn для этих файлов и использовать node_modules в разработке и не включать их в производство вообще:

<script src="https://rawgithub.com/systemjs/systemjs/0.19.6/dist/system.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2.dev.js"></script>

Взгляните на этот вопрос и комментарии в ответах: Angular 2 требуемые библиотеки

Также это самый маленький пакет. json вы можете уйти (в зависимости от вашей настройки):

{ "dependencies": { "angular2": "2.0.0-beta.0", "systemjs": "0.19.6" } }

Я использую Webstorm, который запускает собственный сервер и сам компилирует typescript, когда он обнаруживает файл tsconfig.json.

Итак, если у вас нет собственного сервера, вам нужно будет добавить зависимость, конфигурацию и сценарии Lite-сервера, а если у вас нет компилятора ts, вам придется добавить зависимость typescript и скрипты:

"devDependencies": { "typescript": "^1.7.3" },

Ответ 2

Вы можете удалить ненужные зависимости от package.json. Кроме того, зависимости, объявленные в разделе devDependencies, не поставляются при упаковке для производства.

Ответ 3

Вы можете использовать ng new barebones-app --minimal