Angular 2                
            Создайте пакет с угловым 2+ NPM
        
        
            
    Поиск…
Вступление
Иногда нам нужно разделить какой-то компонент между некоторыми приложениями и опубликовать его в npm, это один из лучших способов сделать это.
Есть некоторые трюки, которые нам нужно знать, чтобы иметь возможность использовать обычный компонент в качестве пакета npm без изменения структуры как вставки внешних стилей.
Вы можете увидеть минимальный пример здесь
Простейший пакет
Здесь мы используем минимальный рабочий процесс для создания и публикации пакета Angular 2+ npm.
Файлы конфигурации
 Нам нужны некоторые файлы конфигурации, чтобы сообщить git , npm , gulp и typescript как действовать. 
.gitignore
 Сначала мы создаем файл .gitignore чтобы избежать версий нежелательных файлов и папок. Содержание: 
npm-debug.log
node_modules
jspm_packages
.idea
build
.npmignore
 Во-вторых, мы создаем файл .npmignore чтобы избежать публикации нежелательных файлов и папок. Содержание: 
examples
node_modules
src
gulpfile.js
 Нам нужно создать gulpfile.js чтобы сообщить Gulp, как скомпилировать наше приложение. Эта часть необходима, потому что перед публикацией нашего пакета нам необходимо свести к минимуму и включить все внешние шаблоны и стили. Содержание: 
var gulp = require('gulp');
var embedTemplates = require('gulp-angular-embed-templates');
var inlineNg2Styles = require('gulp-inline-ng2-styles');
gulp.task('js:build', function () {
    gulp.src('src/*.ts') // also can use *.js files
        .pipe(embedTemplates({sourceType:'ts'}))
        .pipe(inlineNg2Styles({ base: '/src' }))
        .pipe(gulp.dest('./dist'));
});
index.d.ts
 При импорте внешнего модуля файл index.d.ts используется машинописным index.d.ts . Он помогает редактору с автозаполнением и подсказками функций. 
export * from './lib';
index.js
Это точка входа в пакет. Когда вы устанавливаете этот пакет с помощью NPM и импортируете в приложение, вам просто нужно передать имя пакета, и ваше приложение узнает, где найти какой-либо ЭКСПОРТНЫЙ компонент вашего пакета.
exports.AngularXMinimalNpmPackageModule = require('./lib').AngularXMinimalNpmPackageModule;
 Мы использовали папку lib потому что когда мы компилируем наш код, вывод помещается в папку /lib . 
package.json
Этот файл используется для настройки публикации npm и определения необходимых пакетов для работы.
{
  "name": "angular-x-minimal-npm-package",
  "version": "0.0.18",
  "description": "An Angular 2+ Data Table that uses HTTP to create, read, update and delete data from an external API such REST.",
  "main": "index.js",
  "scripts": {
    "watch": "tsc -p src -w",
    "build": "gulp js:build && rm -rf lib && tsc -p dist"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/vinagreti/angular-x-minimal-npm-package.git"
  },
  "keywords": [
    "Angular",
    "Angular2",
    "Datatable",
    "Rest"
  ],
  "author": "[email protected]",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/vinagreti/angular-x-minimal-npm-package/issues"
  },
  "homepage": "https://github.com/vinagreti/angular-x-minimal-npm-package#readme",
  "devDependencies": {
    "gulp": "3.9.1",
    "gulp-angular-embed-templates": "2.3.0",
    "gulp-inline-ng2-styles": "0.0.1",
    "typescript": "2.0.0"
  },
  "dependencies": {
    "@angular/common": "2.4.1",
    "@angular/compiler": "2.4.1",
    "@angular/core": "2.4.1",
    "@angular/http": "2.4.1",
    "@angular/platform-browser": "2.4.1",
    "@angular/platform-browser-dynamic": "2.4.1",
    "rxjs": "5.0.2",
    "zone.js": "0.7.4"
  }
}
расстояние / tsconfig.json
Создайте папку dist и поместите этот файл внутри. Этот файл используется для указания TypScript как скомпилировать ваше приложение. Где взять папку с машинописными текстами и куда поместить скомпилированные файлы.
{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "",
    "rootDir": ".",
    "target": "es5",
    "lib": ["es6", "es2015", "dom"],
    "inlineSources": true,
    "stripInternal": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "removeComments": true,
    "sourceMap": true,
    "outDir": "../lib",
    "declaration": true
  }
}
 После создания файлов конфигурации мы должны создать наш компонент и модуль. Этот компонент получает клик и отображает сообщение. Он используется как html-тег <angular-x-minimal-npm-package></angular-x-minimal-npm-package> . Просто установите этот пакет npm и загрузите его модуль в модель, которую вы хотите использовать. 
SRC / углового-х-минимальной NPM-package.component.ts
import {Component} from '@angular/core';
@Component({
    selector: 'angular-x-minimal-npm-package',
    styleUrls: ['./angular-x-minimal-npm-package.component.scss'],
    templateUrl: './angular-x-minimal-npm-package.component.html'
})
export class AngularXMinimalNpmPackageComponent {
    message = "Click Me ...";
    onClick() {
        this.message = "Angular 2+ Minimal NPM Package. With external scss and html!";
    }
}
SRC / углового-х-минимальной NPM-package.component.html
<div>
  <h1 (click)="onClick()">{{message}}</h1>
</div>
SRC / Угловое-х-данных table.component.css
h1{
    color: red;
}
SRC / углового-х-минимальной NPM-package.module.ts
import { NgModule } from '@angular/core';
import { CommonModule  } from '@angular/common';
import { AngularXMinimalNpmPackageComponent } from './angular-x-minimal-npm-package.component';
@NgModule({
  imports: [ CommonModule ],
  declarations: [ AngularXMinimalNpmPackageComponent ],
  exports:  [ AngularXMinimalNpmPackageComponent ],
  entryComponents: [ AngularXMinimalNpmPackageComponent ],
})
export class AngularXMinimalNpmPackageModule {}
После этого вы должны скомпилировать, создать и опубликовать свой пакет.
Сборка и компиляция
 Для сборки мы используем gulp и для компиляции мы используем tsc . Команда устанавливается в файле package.json по параметру scripts.build . У нас есть этот набор gulp js:build && rm -rf lib && tsc -p dist . Это наши цепочки, которые будут выполнять эту работу для нас. 
Чтобы создать и скомпилировать, запустите в корневом каталоге следующую команду:
 npm run build 
 Это вызовет цепочку, и в итоге вы получите свою папку сборки /dist и скомпилированный пакет в папке /lib . Вот почему в index.js мы экспортировали код из папки /lib а не из /src . 
Публиковать
Теперь нам просто нужно опубликовать наш пакет, чтобы мы могли установить его через npm. Для этого просто запустите команду:
 npm publish 
Это все!!!