Ricerca…


introduzione

A volte abbiamo bisogno di condividere alcuni componenti tra alcune app e pubblicarlo in npm è uno dei modi migliori per farlo.

Ci sono alcuni trucchi che dobbiamo sapere per essere in grado di utilizzare un componente normale come pacchetto npm senza modificare la struttura come inlining di stili esterni.

Puoi vedere un esempio minimale qui

Pacchetto più semplice

Qui stiamo condividendo un flusso di lavoro minimo per costruire e pubblicare un pacchetto Angular 2+ npm.

File di configurazione

Abbiamo bisogno di alcuni file di configurazione per dire a git , npm , gulp e typescript come comportarsi.

.gitignore

Per prima cosa creiamo un file .gitignore per evitare il versionamento di file e cartelle indesiderati. Il contenuto è:

npm-debug.log
node_modules
jspm_packages
.idea
build

.npmignore

In secondo luogo creiamo un file .npmignore per evitare di pubblicare file e cartelle indesiderati. Il contenuto è:

examples
node_modules
src

gulpfile.js

Dobbiamo creare un gulpfile.js per dire a Gulp come compilare la nostra applicazione. Questa parte è necessaria perché è necessario ridurre a icona e integrare tutti i modelli e gli stili esterni prima di pubblicare il pacchetto. Il contenuto è:

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

Il file index.d.ts viene utilizzato da typescript durante l'importazione di un modulo esterno. Aiuta l'editor con i suggerimenti per il completamento automatico e la funzione.

export * from './lib';

index.js

Questo è il punto di ingresso del pacchetto. Quando si installa questo pacchetto utilizzando NPM e si importa nell'applicazione, è sufficiente passare il nome del pacchetto e l'applicazione imparerà dove trovare qualsiasi componente ESPORTATO del pacchetto.

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

Abbiamo usato la cartella lib perché quando compiliamo il nostro codice, l'output è collocato all'interno della cartella /lib .

package.json

Questo file è usato per configurare la pubblicazione di npm e definisce i pacchetti necessari per farlo funzionare.

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

Creare una cartella dist e posizionare questo file all'interno. Questo file è usato per dire a Typescript come compilare la tua applicazione. Dove trovare la cartella dattiloscritto e dove mettere i file compilati.

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

Dopo aver creato i file di configurazione, dobbiamo creare il nostro componente e modulo. Questo componente riceve un clic e visualizza un messaggio. È usato come un tag html <angular-x-minimal-npm-package></angular-x-minimal-npm-package> . Installa questo pacchetto npm e carica il suo modulo nel modello che desideri utilizzarlo.

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

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

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

h1{
    color: red;
}

src / angolare-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 {}

Successivamente, è necessario compilare, compilare e pubblicare il pacchetto.

Costruisci e compila

Per build usiamo gulp e per la compilazione usiamo tsc . Il comando è impostato nel file package.json, all'opzione scripts.build . Abbiamo questo set gulp js:build && rm -rf lib && tsc -p dist . Questa è la nostra catena di compiti che farà il lavoro per noi.

Per compilare e compilare, eseguire il seguente comando nella radice del pacchetto:

npm run build

Questo attiverà la catena e /dist cartella build in /dist e il pacchetto compilato nella cartella /lib . Questo è il motivo per cui in index.js abbiamo esportato il codice dalla cartella /lib e non da /src .

Pubblicare

Ora abbiamo solo bisogno di pubblicare il nostro pacchetto in modo che possiamo installarlo tramite npm. Per questo, basta eseguire il comando:

npm publish

Questo è tutto!!!



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow