Я не могу понять, как работает браузерный вариант basedir
.
Примечание. Возможно, я ошибаюсь в своем понимании всей концепции basedir
, потому что я исхожу из RequireJS (думаю baseUrl
).
ИЗМЕНИТЬ
В самом деле, я был не прав, но вы все равно можете достичь того, что я пытался сделать с опцией paths
, см. Мой ответ ниже.
Я понимаю, что опция basedir
дает вам возможность (свобода!) указать все требуемые пути (начиная с .
) из статического корня/базового каталога.. И НЕ от process.cwd()
.
Это буквально заставляет меня сходить с ума, хотя такая функция была бы настолько базовой для реализации и что многие люди столкнулись бы с той же проблемой, что и я, но на самом деле очень мало информации в Интернете о том, как правильно настройте опцию basedir
.. И поверьте мне, это не прямолинейно..
Итак, вот пример BASIC, который сводит меня с ума.
Учитывая следующую структуру файла:
js/
js/app.js
js/src/models/Person.js
js/src/views/PersonView.js
И работает:
var browserify = require('browserify');
var gulp = require('gulp');
gulp.task('scripts', function() {
var b = browserify('./app', {basedir: './js'});
b.bundle().pipe(gulp.dest('./dist'));
});
Я ожидаю, что смогу выполнить следующий вызов require()
в PersonView.js
:
var Person = require('./src/models/Person');
...
Вместо (который явно работает...):
var Person = require('../models/Person');
...
Но я получаю следующую ошибку:
Error: module "./src/models/Person" not found from "/Users/...some path.../js/src/views/PersonView.js"
Что мне не хватает в опции basedir
?