通过使用转换器,已经可以使用ES6模块.最简单的方法之一是使用Browserify和Babelify.我遇到的问题是如何处理依赖管理.
在过去,你只有一些Bower依赖项.构建将非CDN捆绑到vendor.js并将项目特定文件捆绑到foobar.js(或其他).那么你就可以简单地在不同的项目中使用生成的代码bower install foobar --save
.如果foobar和你的新项目都具有共同的依赖关系,那么很容易通过Bowers flat依赖来解决它.
现在进入ES6模块:假设我有一个使用lodash的项目foo.目录结构如下:
src/js/foo.js
src/vendor/lodash/dist/lodash.min.js
并且foo.js首先声明:
import * as _ from '../../vendor/lodash/dist/lodash.min.js';
或者(因为Babify从Babelify转换为CommonJS)
import * as _ from './../../vendor/lodash/dist/lodash.min.js';
如果我现在整理并发布我的foo项目并启动一个使用foo的新项目栏,这将是我的目录结构.
src/js/bar.js
src/vendor/foo/dist/foo.js
src/vendor/lodash/dist/lodash.min.js
但是这不起作用,因为从foo到lodash的路径现在被破坏了(如果我正确理解了Browserify'./blaat/file.js'中的点斜线是相对于它被调用的文件).
是否有一些方法导入而不做任何文件路径假设?
是不是有某种方式来表明多个源根?(即在上面的例子中src/js和src/vendor ......好吧,理想情况下你只想说明import * as _ from 'lodash';
)
我只在cli上使用了Browserify with Babelify.我应该使用其他一些转换器吗?