【问题标题】:Browserify assign relative paths to modules instead of absolute pathsBrowserify 为模块分配相对路径而不是绝对路径
【发布时间】:2017-11-02 12:36:39
【问题描述】:

鉴于此文件树:

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 命令,我会留下索引作为模块标识符,所以这不起作用。

我想捆绑所有模块,但仍然可以通过这样的路径使用 require 来引用它们。

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

我知道我可以为模块设置别名,但这需要手动为每个模块设置别名,这不是一个真正可行的解决方案。


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

【问题讨论】:

    标签: javascript browserify


    【解决方案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"]);
    

    如你所愿

    【讨论】:

    • 这适用于 windows 和 osx 吗?如在,我可以将其作为 package.json 中的条目运行吗?
    • @Rik,对于 windows,当您在 Git bash 或任何其他适用于 windows 的 unix 模拟终端中运行它时,它将起作用
    • 好吧,太棒了!这不是我想要的,但它确实有效,它让我朝着正确的方向前进。写了一个小脚本,我可以添加到 browserify.js 配置中(稍后会添加到问题中,因为它可能对其他人有用)。谢谢!
    • Okie 很酷 :-)。如果您对此拒绝,我的下一个建议是使用脚本并使用 js 代码进行此修改。使其独立于$PWD 和sed 的可用性。这使它可以跨操作系统运行
    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2016-11-23
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多