Obtenir browserify besoin chemins se comportent plus comme des requirejs
Je trouve que c'est une douleur lors du déplacement de fichiers et de constamment avoir à réécrire le fichier include chemins sont relatifs à leur nouveau dossier.
Je veux éviter cela dans mon browserify code:
var View = require('../../../../base/view');
Et faire quelque chose de plus en ligne avec requirejs où il connaît mon chemin d'accès de base est js
:
var View = require('base/view');
- Dans browserify doc il y a une option appelée
opts.basedir
que je comprends, c'est de faire ce que vous êtes à la recherche pour:opts.basedir is the directory that browserify starts bundling from for filenames that start with .
MAIS, je ne peux pas l'obtenir pour travailler moi-même (avecgulp-browserify
) - c'est pour la première fichier js enfin à droite? Pas l'ensemble de la js arbre. Donc, il ne semble pas résoudre le problème
- en effet
basedir
ne permet pas de résoudre le problème.opts.paths
est ce que @Abadaba est à la recherche pour. J'ai répondu à ma propre question avec plus de détails ici: stackoverflow.com/questions/22434494/browserify-basedir-option/...
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le
paths
option. Il n'est pas documentée dans browserify, mais dans nœud-navigateur-résoudre (utilisé sous le capot):Une excellente option ici est d'utiliser le
aliasify
plugin, disponible ici. Puis il suffit d'ajouter quelque chose comme ceci à votrepackage.json
, avec tous les chemins de la aliasify config relative à la position du fichier:Alors, à vos fichiers, il suffit de faire:
node_modules
Vous pouvez mettre le code de votre application (ou un lien vers ce dernier, si votre plate-forme prend en charge) sous
node_modules
. E. g.:Cependant, il y a une mise en garde importante: ceci rompt l'application de transformations spécifiées par programme via l'API, de l'e.g:
Dans browserify il y a un concept de "haut-niveau" les fichiers qui entre en jeu à la transforme. Le concept, et le comportement de transforme en général, est mal expliqué dans le browserify de la documentation. Vous pouvez voir une partie de la discussion de la question ici: substack/node-browserify#993
pathmodify
Une autre option est mon pathmodify browserify plugin. Ceci permet d'utiliser des chemins non relatifs et des programmes de transformations. Pour activer browserifying code comme:
Vous ferais quelque chose comme:
Combiné
Noter que pathmodify sera seulement de résoudre le problème de browserify. Si vous avez besoin des chemins comme
base/view
de travailler aussi dans un autre contexte, comme le nœud, alors si vous avez des liens symboliques disponible, vous pouvez combiner les deux. Par exemple, le lien symboliquenode_modules/base
à/somedir/js/base
, et également configurer pathmodify comme indiqué et continuer à point browserify à des chemins à l'extérieur denode_modules
pour les fichiers d'entrée.