Browserify为模块分配相对路径而不是绝对路径

时间:2017-11-02 12:36:39

标签: javascript browserify

鉴于此文件树:

src
  - main.js
  ui
    - foo.js
    - bar.js

此命令生成模块,其中标识符已设置为绝对模块路径:

browserify ./src/**/*.js -o ./dist/bundle.js --full-paths

结果模块ID:

"/Users/rikschennink/.../src/ui/foo.js"

有没有办法让这些模块路径相对?如果我省略了--full-paths命令,我将索引作为模块标识符,这样就无法正常工作。

我想捆绑所有模块,但仍然能够通过这样的路径引用它们。

var module = require('/ui/foo');

我知道我可以为模块添加别名,但这需要手动对每个模块进行别名,这实际上并不是一个可行的解决方案。

我使用了一个JavaScript函数来替换输出流中的绝对路径。你可以在这里找到它: https://github.com/rikschennink/conditioner-boilerplate-browserify/blob/master/browserify.js

1 个答案:

答案 0 :(得分:1)

我只需使用sed为我修复这些内容

browserify -r ./src/ui/bar -r ./src/main ./src/**/*.js --full-paths | sed "s|$PWD/src||g" > ./dist/bundle.js

然后生成的最后一行是

},{}]},{},["/main.js","/ui/bar.js","/ui/ui.js"]);

就像你想要的那样