Browserify 为模块分配相对路径而不是绝对路径
Browserify assign relative paths to modules instead of absolute paths
鉴于此文件树:
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
我会简单地使用 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"]);
如你所愿
鉴于此文件树:
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
我会简单地使用 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"]);
如你所愿