如何使用 duojs 获取特定文件

how to require a specific file using duojs

我需要包含 github 上存在的一个库,但没有很好地打包;使用 Duo.js

在撰写本文时,我正在使用以下内容来实现我的愿望:

bower
gulp
main-bower-files

Bower 只是下载库。
Gulp,使用 main-bower-files 可用于覆盖单个包选项并设置我可以构建的所谓 "main file"。

示例:

gulp.task('copy-libs', function () {
  return gulp.src(bowerFiles({ env: 'development' }))
    .pipe(gulp.dest('build/libs/'));
});

bower.json 文件:

  "dependencies": {
    "cash": "sudo-js/cash",
    "bootstrap": "~3.3.2",
    "delorean": "~0.8.7",
    "react": "~0.12.2"
  },
  "overrides": {
    "cash": {
      "main": {
        "development": "build/debug/cash.js"
      }
    }
  }
}

如何使用 duojs 实现此目的?
关于 not 附带有效 component.json

的库,文档非常薄

您可以为您的库指定入口文件的路径。它不会像仅指定 user/repo 那样干净,但它会完成工作。

例如,当包含 Twitter Bootstrap from twbs/bootstrap

require('twbs/bootstrap@v3.3.2:dist/js/bootstrap.js');
// repo:        twbs/bootstrap
// version/tag: v3.3.2
// path:        dist/js/bootstrap.js

不幸的是,这不是开箱即用的,因为它假定您拥有 jQuery 全局...因此您需要在 [=36= 上方添加] 上一行。

jQuery = require('components/jquery'); // leave out `var` so it becomes a global

这包括精彩的 components 项目中的 jQuery。 (他们打包了流行的库,以便各种包管理器可以使用它们。

此外,事实证明有一个 components/bootstrap component.json 正确包装的 component.json

因此,您实际上可以使 bootstrap 使用以下内容:

jQuery = require('components/jquery');
require('components/bootstrap');

对于其他不常见的库,您可以使用第一个提到的过程来指定正确的 JS/CSS 文件的路径。 (即:user/repo@version:path