【发布时间】:2015-08-19 00:27:50
【问题描述】:
我正在写Couch app。构建过程的输出必须是自包含 JS 文件的目录树,如下所示:
距离 ├── _附件 │ ├── logo.jpg │ └── splash.jpg ├── 列表 │ └── sitemap.js ├── 节目 │ ├── article.js │ ├── home.js │ └──dashboard.js ├── 浏览量 │ ├── 最近 │ │ └── map.js │ ├── 精选 │ │ └── map.js │ └── 统计 │ └── map.js │ └── reduce.js每个输出的 JS 文件都是一个完整的应用程序,所有导入的模块都内联。每个输入文件都是一个单独的入口点,它将需要 / 从顶级 lib 目录(和 node_modules 或课程)导入模块。然后,Erica 将生成的 dist 目录部署到 Couch(欢迎提供替代建议)。
到目前为止,我已经尝试了以下方法:
- 使用 Broccoli 编译 Babel(ES7 耶!)。使用 CommonJS 的 require 语句生成 ES5 模块;内联导入的模块需要进一步的构建步骤。
- 从命令行浏览和丑化。看起来这只是为生成单个输出文件而设计的。
- 在 makefile 中,分别对每个输入进行 uglify 并将输出发送到
dist下的匹配目录路径。正在进行的工作,但不是理想的解决方案。
所以,我要回到 Makefiles。它们以异国情调的方式很漂亮,但我真的很想坚持使用现代/基于 JS 的构建过程——比如 Broccoli 或 Gulp(或其他)。有什么建议吗?
更新
我看到 Webpack 可以为多个入口点构建多个输出文件。但是它可以保留输入目录结构吗?
【问题讨论】:
-
如果我正确理解您的问题,您希望内联 require js 模块以使它们在您的脚本中可用。那正确吗?你可以这样做,但你不需要,因为 couchdb 支持需要 js。这意味着您可以执行
var my_lib=require("path-to-some-lib"),它可以与 couchdb 一起使用。 -
好的,那么我只需要将 ES6 和 CommonJS 模块转换为 RequireJS 模块。你有关于 CouchDB 的模块加载功能的文档的链接吗?除了基于 cmets (kanso) 中的元数据的一些自定义方案之外,我什么也找不到。
-
我发现this post 非常有用。但是here is the official documentation。希望这会有所帮助:)
标签: build couchdb ecmascript-6 commonjs