所以我正在写一个php-package,它将放在github&packagist上。它生成数据并将其写入文件,该软件包还将附带一个js库,该库的工作是读取该数据文件并将其显示给用户。
现在,这个js库依赖于其他库,jquery是其中之一。
声明那些依赖关系的干净方法是什么?
我不介意使用require.js,实际上我已经将其用于其他几个项目。但是这些项目是完整的“应用程序”,而不是其他项目中要包含的库。因此,在这些情况下,无需添加依赖关系和配置require.js,而只需执行一次即可。但是这次,我希望能够以最少的代码包含该库,最好不要长篇幅地说明如何正确加载它以及开发人员还需要加载其他哪些库。
简而言之:我想分发一个依赖于其他库的库,我或其他开发人员可以用最少的代码量就可以将其包含在另一个项目中,而无需知道该库还依赖于哪些其他库。
我敢肯定这已经被问过了,但是我似乎找不到任何东西。我确实找到了很多有关如何在主项目中声明依赖项的信息,但在库中却没有。
最佳答案
您有两种选择:
将您的应用程序捆绑到一个文件中(包括第三方库)
只需将您的应用程序捆绑到一个文件中(不包括第三方库)
在这两种情况下,您都需要创建一个自动构建。您可以使用gulp创建任务以将所有文件连接为一个文件,例如其他开发人员将导入的framework.js
和framework.min.js
文件。
您可以使用如果使用的是require.js,则可以使用gulp-requirejs plugin运行requirejs optimizer:
var gulp = require('gulp'),
rjs = require('gulp-requirejs');
gulp.task('requirejsBuild', function() {
rjs({
baseUrl: 'path/to/your/base/file.js',
out: 'FILENAME\_TO\_BE\_OUTPUTTED',
shim: {
// standard require.js shim options
},
// ... more require.js options
})
.pipe(gulp.dest('./delpoy/')); // pipe it to the output DIR
});
如果您决定也包含第3方库,请使用No conflict fucntion避免问题(如果有人已经加载了jquery)。
如果您决定不包括这些库,则可以在该库的全局范围内查找某些变量,如果这些依赖项不可用,则会引发错误。
if(typeof $ === "undefined") throw new Error("Framework requires > Jquery 1.9.0");
通常,您可以轻松地找到库的版本,例如在jquery中:
$.prototype.jquery
更新资料
我个人建议使用Browserify。如果使用的是requirejs,则可以使用browserify-ftw自动将项目从AMD迁移到CommonJS。
Browserify优化器将生成一个
bundle.js
文件,您的用户将可以直接导入该文件,而无需下载第三方依赖项或配置模块加载器。希望能帮助到你 :)
关于javascript - 创建一个JS库并声明其他库所依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29228492/