2016-04-07 7 views
0

Ich versuche, eine Bibliothek zu erstellen, und ich möchte Fabricjs als eine seiner Abhängigkeiten verwenden. Für diejenigen, die Fabric installiert haben, wissen sie, dass es nicht völlig trivial ist, sie zu installieren (sie benötigt spezielle Bibliotheken, spezifische Knotenversionen usw.). Ich habe es geschafft, das Paket in meinem Projekt zu installieren, und ich verwende es mit Erfolg.Externe Lib zu meiner eigenen Javascript-Bibliothek bündeln

Was ich wissen möchte, ist meine spezifische Bibliothek als Paket zu npm Registrierung zu veröffentlichen.

Mein Problem ist, dass ich mein Paket veröffentliche und wenn jemand mein Paket installieren möchte, übertrage ich die gleiche Komplexität auf ihn/sie. Wie ist es möglich, dass der Benutzer meiner Bibliothek es installiert, ohne zuerst die gleichen Schritte auszuführen, als wenn sie das fabricjs-Paket selbst installiert hätte?

Ich schaute auf die bundledDependencies Eigenschaft, aber mit nicht viel Erfolg.

Ich betrachte mich nicht ein Javascript-Experte meine Frage vielleicht grundlegend falsch ist ..

ich zur Zeit mit npm, und ich bin mit webpack auch vertraut, wenn die Arbeit machen. So veröffentlicht i tun (von package.json):

"scripts": { 
    "build": "babel ./src --out-dir ./lib", 
    ... 
+0

hast du bei Paket-Manager wie npm aussehen und/oder Bower, können diese die Abhängigkeiten für Sie übernehmen? –

+0

ja, ich habe die Frage bearbeitet – tbo

+0

Ich glaube nicht, was Sie wollen, ist möglich. Versuchen Sie zuerst, die Komplexität Ihrer eigenen Installation zu reduzieren. – evolutionxbox

Antwort

0

Schließlich schaffte ich es, um herauszufinden, mit einiger webpack Hilfe ist die Lösung mit webpack zu bauen und alle Bibliotheken werden in einer Datei gebündelt werden, im Detail :

1) eine webpack Konfiguration erstellen (lässt webpack.cfg.js) sagen, wie (helfen here) folgt:

module.exports = { 
    entry: { 
     src: './src' 
    }, 
    output: { 
     path: path.join(__dirname, 'lib'), 
     filename: 'index.js', 
     libraryTarget: 'umd' 
    }, 
    //Use externals to exclude libraries 
    //externals: ['lodash'], 
    resolve: { 
     extensions: ['', '.js'] 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.(js|jsx)$/, 
       include: [srcPath], 
       exclude: /(node_modules|bower_components|lib)/, 
       loaders: ['babel'] 
      } 
     ] 
    } 
    ... 
} 

2) Dann mit Ihnen bauen:

"scripts": { 
    "build": "webpack --config webpack.cfg.js --display-modules", 
    .... 
} 

Und es funktioniert, jede externe lib in den erzeugten index.js enthalten ist, wie ein Fett-Glas (für die Java-Welt)

my 2 cents

Verwandte Themen