【发布时间】:2017-02-06 10:40:35
【问题描述】:
我有一个打算在浏览器中工作的 javascript 库,我用以下类型的 gulpfile 打包:
gulp.task("build", function() {
return gulp.src(sourceFiles)
.pipe(sourcemaps.init())
.pipe(concat("lib.js"))
.pipe(sourcemaps.write())
.pipe(gulp.dest("dist/"));
});
我想开始将此库迁移到 ES2015,使用 Babel。
目前,src/ 文件夹中的每个源文件都代表一个模块,并使用以下约定编写。
在src/MyModule.js:
MyLib.MyModule = (function () {
var module = {};
// code here...
return module;
})();
我想将这些脚本迁移到 ES2015 样式的模块,但我仍然希望我的版本包含单个脚本(此处为 lib.js)。然后,我的库的使用者将使用 AMD 实现(例如 require.js)加载我的模块。
有可能实现这样的事情吗?我该怎么做?
编辑:
我不需要我的模块像现在一样保持嵌套 (Foo.Bar.Baz)。但我确实需要我的模块与 Flow 兼容。
【问题讨论】:
-
这正是 Webpack 和 Browserify 等模块捆绑器旨在解决的问题。你可以用其中一个替换你的 Gulp 构建,或者integrate one of them into your config。
-
@JoeClay 感谢您的链接。消费者将如何通过这些解决方案加载和使用我的库?
-
取决于你如何配置它。不能代表 Browserify,因为我从来没有真正使用过它,但是 Webpack 可以设置为输出 CommonJS、AMD、全局变量等。我建议输出为 UMD,这样可以让你的库兼容他们都是。有关更多信息,请参阅本指南:webpack.js.org/guides/author-libraries
标签: javascript gulp babeljs