node_modules
Sie können Ihren Anwendungscode (oder einen Symlink dazu, sofern Ihre Plattform dies unterstützt) unter node_modules
eingeben. ZB:
node_modules/
+-- app/
+-- js/
+-- base/
+-- view.js
+-- a/
+-- b/
+-- c/
+-- somefile.js
// somefile.js
require("app/js/base/view");
jedoch, dann ist es eine wichtige Einschränkung: diese bricht Anwendung von Transformationen programmatisch über die API angegeben, zB:
browserify('app/entry.js')
.transform(es6ify)
In browserify gibt es ein Konzept der „top- Level "Dateien, die mit Transformationen ins Spiel kommen. Dieses Konzept und das Verhalten von Transformationen im Allgemeinen wird in der Dokumentation zu browserify nur unzureichend erläutert. Sie können einige Diskussion über die Frage hier sehen: substack/node-browserify#993
pathmodify
Eine weitere Option ist mein pathmodify browserify Plugin. Dies ermöglicht die Verwendung von nicht relativen Pfaden und programmatischen Transformationen.
var View = require('base/view');
Sie tun würde, so etwas wie: browserifying Code wie ermöglichen
var pathmodify = require('pathmodify');
var opts = {mods: [
// Maps require() IDs beginning with "base/" to begin with
// "/somedir/js/base/"
pathmodify.mod.dir("base", "/somedir/js/base"),
]};
// Give browserify the real path to entry file(s).
// pathmodify will transform paths in require() calls.
browserify('./js/entry')
.plugin(pathmodify, opts)
.transform(es6ify)
.bundle()
...
Kombinierte
Beachten Sie, dass pathmodify wird das Problem nur für browserify lösen. Wenn Sie die Pfade wie base/view
benötigen, um auch in einem anderen Kontext zu arbeiten, wie Knoten, dann können Sie, wenn Sie Symlinks zur Verfügung haben, beide kombinieren. Beispiel: symbolisch node_modules/base
bis /somedir/js/base
und auch pathmodify wie angegeben konfigurieren und weiterhin auf Pfade außerhalb von node_modules
für Eintragsdateien verweisen.
In [ browserfig doc] (https://github.com/substack/node-browserify#var-b--browserifyfiles-or-opts) gibt es eine Option namens 'opts.basedir', von der ich verstehe, dass sie tut, wonach Sie suchen: 'opts.basedir ist das Verzeichnis, von dem browserify beginnt mit der Bündelung von Dateinamen, die mit beginnen. ' ABER, ich kann es nicht bekommen arbeite selbst (mit 'gulp-browserify') – eightyfive
@ 8y5 es ist für die erste js-datei endlich richtig? Nicht der ganze js Baum. So scheint es nicht das Problem zu lösen –
@SebastienLorber in der Tat 'basedir' löst das Problem nicht. 'opts.paths' ist das was @Abadaba sucht. Ich beantwortete meine eigene Frage mit mehr Details hier: http://stackoverflow.com/questions/22434494/browserify-basedir-option/22601755#22601755 – eightyfive