2017-08-16 4 views
0

Ich versuche, ein wiederverwendbares NPM-Modul zu erstellen. Das Tutorial, das ich folge, sagt, dass ich eine package.json Datei im Ordner dist brauche. Also habe ich zuerst die package.json Datei von der Wurzel meines Projekts in den Ordner dist kopiert und alles war gut.npm Paket: package.json Handhabung

Das Problem ist, wenn es um die Quellcodeverwaltung geht, wollen Sie wirklich nichts im Ordner dist eingecheckt werden, so was ich getan habe, war eine package.dist.json Datei im Stamm meines Projekts und dann in der Build Schritt kopieren Sie es in den Ordner dist und benennen Sie es um.

Dies funktioniert nicht. Hier ist mein Build-Skript:

"scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "transpile": "ngc", 
    "package": "rollup -c", 
    "minify": "uglifyjs dist/bundles/test-service.umd.js --screw-ie8 --compress --mangle --comments --output dist/bundles/test-service.umd.min.js", 
    "build": "copyfiles package.dist.json dist && rename dist/package.dist.json dist/package.json && npm run transpile && npm run package && npm run minify && npm pack dist/" 
}, 

Hier sind meine devDependencies:

"devDependencies": { 
    "@angular/compiler": "^4.0.0", 
    "@angular/compiler-cli": "^4.0.0", 
    "rollup": "^0.47.4", 
    "typescript": "^2.4.2", 
    "uglify-js": "^3.0.27", 
    "copyfiles": "^1.0.0", 
    "rename-cli": "^4.0.0" 
    }, 

Dies funktioniert nicht ich einen Fehler zu sagen:

Die Syntax des Befehls ist falsch.

Ich bin nicht einmal sicher, ob dies der beste Ansatz ist. Gibt es einen besseren Ansatz? Wenn nicht, warum funktioniert meine build Aufgabe nicht? Hier

ist die rollup.config.js:

import angularInline from 'rollup-plugin-angular-inline'; 

export default { 
    entry: 'dist/hello-world.js', 
    dest: 'dist/bundles/hello-world.umd.js', 
    sourceMap: 'inline', 
    format: 'umd', 
    moduleName: 'hello-world-app', 
    globals: { 
     '@angular/core': 'ng.core', 
     '@angular/router': 'ng.router' 
    }, 
    plugins: [ 
     angularInline({ 
      include: './dist/src/**/*.component.js' 
     }) 
    ], 
    external: ['@angular/core', '@angular/router'], 
    treeshake: true 
} 
+0

Eines Ihrer anderen Skripts muss fehlerhaft sein. Können Sie bitte Ihre Frage mit all Ihren Paketen aktualisieren?json 'scripts' (minify, transpile, et al) –

+0

Ich habe meine Frage mit allen Skripten aktualisieren. – Zeus82

+0

Stört es dich auch, deine rollup.config-Datei zu posten? –

Antwort

0

Es scheint, Sie Windows verwenden, wie ein quick google search zeigt an, dass der Fehler ist ein Windows-Befehlszeilenfehler. Diese Informationen sind äußerst hilfreich, wenn Sie Ratschläge zu Befehlszeilenproblemen benötigen (zur späteren Verwendung).

Versuchen Sie Folgendes:

  • wickeln Sie den Dateinamen, den Sie kopieren/in Anführungszeichen zu bewegen

    copyfiles "package.dist.json" dist 
    
  • Verwenden Fenster Pfadseparator \ (nicht Unix/Linux-Separator /) beim Kopieren/Bewegung

    rename dist\package.dist.json dist\package.json 
    # also try with quotes 
    rename "dist\package.dist.json" "dist\package.json" 
    

Wenn Sie jedoch versuchen, ein verteilbares Modul zu erstellen, in dem Benutzer Ihren Code verzweigen und eigene Builds auf verschiedenen Plattformen ausführen möchten, empfehle ich Ihnen eine robustere Technik zum Erstellen Ihres Codes, die plattformübergreifend funktioniert.

  • Option 1: schluck, grunzen, und/oder Freunde
  • Option 2: Schreiben Sie Ihren Build Code in NodeJS. Dies kann nur eine einfache JS-Datei sein, die das Kopieren, Umbenennen usw. mit NodeJS und dem eingebauten Modul fs durchführt. Ihr Build-Befehl wäre einfach "build": "node my-build-script.js".
Verwandte Themen