Recherche…


Introduction

Parfois, nous devons partager certains composants entre certaines applications et le publier en npm est l’une des meilleures façons de le faire.

Il y a quelques astuces que nous devons savoir pour pouvoir utiliser un composant normal en tant que paquet npm sans changer la structure en insérant des styles externes.

Vous pouvez voir un exemple minimal ici

Forfait le plus simple

Nous partageons ici un flux de travail minimal pour créer et publier un paquet Angular 2+ npm.

Fichiers de configuration

Nous avons besoin de fichiers de configuration pour indiquer à git , npm , gulp et typescript comment agir.

.gitignore

Tout d'abord, nous créons un fichier .gitignore pour éviter de .gitignore les fichiers et dossiers indésirables. Le contenu est:

npm-debug.log
node_modules
jspm_packages
.idea
build

.npmignore

Deuxièmement, nous créons un fichier .npmignore pour éviter de publier des fichiers et des dossiers indésirables. Le contenu est:

examples
node_modules
src

gulpfile.js

Nous devons créer un gulpfile.js pour indiquer à Gulp comment compiler notre application. Cette partie est nécessaire car nous devons minimiser et intégrer tous les modèles et styles externes avant de publier notre package. Le contenu est:

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

Le fichier index.d.ts est utilisé par typecript lors de l'importation d'un module externe. Il aide l'éditeur avec l'auto-complétion et les conseils de fonction.

export * from './lib';

index.js

C'est le point d'entrée du paquet. Lorsque vous installez ce package à l’aide de NPM et que vous l’importez dans votre application, il vous suffit de passer le nom du package et votre application apprend où trouver tout composant EXPORTED de votre package.

exports.AngularXMinimalNpmPackageModule = require('./lib').AngularXMinimalNpmPackageModule;

Nous avons utilisé le dossier lib car lorsque nous compilons notre code, la sortie est placée dans le dossier /lib .

package.json

Ce fichier est utilisé pour configurer votre publication npm et définit les paquets nécessaires à son fonctionnement.

{
  "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"
  }
}

dist / tsconfig.json

Créez un dossier dist et placez ce fichier à l'intérieur. Ce fichier est utilisé pour indiquer à Typescript comment compiler votre application. Où trouver le dossier dactylographié et où placer les fichiers compilés.

{
  "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
  }
}

Après avoir créé les fichiers de configuration, nous devons créer notre composant et notre module. Ce composant reçoit un clic et affiche un message. Il est utilisé comme une balise html <angular-x-minimal-npm-package></angular-x-minimal-npm-package> . Installez simplement ce paquet npm et chargez son module dans le modèle que vous souhaitez utiliser.

src / angular-x-minimal-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 / angular-x-minimal-npm-package.component.html

<div>
  <h1 (click)="onClick()">{{message}}</h1>
</div>

src / angular-x-data-table.component.css

h1{
    color: red;
}

src / angular-x-minimal-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 {}

Après cela, vous devez compiler, compiler et publier votre package.

Construire et compiler

Pour la construction, nous utilisons gulp et pour la compilation, nous utilisons tsc . La commande est définie dans le fichier package.json, à l'option scripts.build . Nous avons cet ensemble gulp js:build && rm -rf lib && tsc -p dist . Ce sont nos tâches de chaîne qui feront le travail pour nous.

Pour générer et compiler, exécutez la commande suivante à la racine de votre package:

npm run build

Cela déclenchera la chaîne et vous vous retrouverez avec votre dossier build /dist et le paquet compilé dans votre dossier /lib . C'est pourquoi, dans index.js nous avons exporté le code du dossier /lib et non de /src .

Publier

Maintenant, nous avons juste besoin de publier notre paquet pour que nous puissions l'installer jusqu'à npm. Pour cela, lancez simplement la commande:

npm publish

C'est tout!!!



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow