Ich habe ein Npm-Modul my_lib
, die einige Objekte zur Verfügung stellt, die ich für die Verwendung von mehreren nachgelagerten Modulen verfügbar wäre. my_lib
wird in ES6 geschrieben und verwendet babel zum transpilieren. Es lebt in einem privaten Github Repo, der für die Bauherren der nachgelagerten Module zugänglich ist. Es ist wichtig, dass die nachgeschalteten Module, die my_lib
verbrauchen, in der Lage sind, Symbole von my_lib
wie jedes andere Knotenmodul zu importieren.Setup Babel/Browserify Build für (private) npm Modul
Ich mag wäre in der Lage sein import { libA, libB } from 'my_lib';
in einem der nachgeschalteten Module und libA
durch my_lib
wie erwartet definiert haben, zu schreiben, vorausgesetzt, dass stromabwärts des Moduls package.json
in dependencies
wie einen Eintrag enthält "my_lib": "orgname/reponame#branchname"
I in my_lib
einen Eintrag haben, so package.json
unter scripts
wie:
"postinstall" : "npm run build",
"build": "mkdir ./dist && browserify ./src/index.js -t babelify -t envify -o index.js",`
wo ./src/index.js
ist
// Entry point for bundling
export * as libB from "../sublib1/adapter";
export * as libA from "../sublib2/adapter";
Wenn nötig, könnte ich import {libA, libB}
von my_lib/dist/bundle
nennen, obwohl dies etwas unerwünscht ist. Die Hauptsache ist, alle Namen, die ich von my_lib
exportieren, in den Downstream-Modulen verfügbar zu machen. Ich bin wahrscheinlich verwirrt darüber, was mit browserify und babel los ist. Ich bin sehr glücklich darüber, die Postinstall/Build-Hooks in jede Form zu ändern, die bequemer ist.
Derzeit im Downstream-Paket (eine express.js
app), habe ich die Linie import * as adapters from my_lib;
npm install
auf dem express
App Lauf ohne Fehler beendet. Ich sehe die index.js
Datei, die ich in node_modules/my_lib
erwarte. Wenn ich meine App nach der import
(oder für diese Angelegenheit) einbringe, existiert das adapters
Objekt, aber keines der libB
oder libA
auf dem Objekt. Es scheint ein reines Vanille-JS-Objekt ohne Mitglieder zu sein, aber __proto__
.