gpt4 book ai didi

Browserify basedir 选项(类似RequireJS)

转载 作者:行者123 更新时间:2023-12-03 08:16:14 28 4
gpt4 key购买 nike

我不知道如何 browserify basedir option作品..

注:我对整个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选项?

最佳答案

原来basedir与 RequireJS 的 baseUrl 不同.正如@Ben 在上面的评论中所说,官方文档说:

opts.basedir is the directory that browserify starts bundling from for filenames that start with ..



(source)

意思是 basedir仅适用于 entry files .进一步 require文件树结构深处的调用将始终相对于当前正在解析的文件进行解析。

回答我的问题
paths browser-resolve 的选项(由 browserify 在引擎盖下使用)是我正在寻找的:

paths - require.paths array to use if nothing is found on the normal node_modules recursive walk



(source)

只需将此选项与其他选项一起传递 browserify选项 when instantiating the bundler .

注意:看起来是 messing up things browserify-shim transform一起使用时.

关于Browserify basedir 选项(类似RequireJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22434494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com