如何在角度应用程序中组装js库

时间:2016-01-07 16:44:21

标签: javascript angularjs node.js build gulp

我正在开始我的第一个角度应用程序(有关信息,它是angular2)。 我开始学习像nodejs,gulp等工具......

我有一个nodejs服务器,它服务于服务器和前端。

对于前端的东西,我有html,css,资源和我的js文件。 对于使用angular的,我在node_modules中有所有必需的依赖项。

我可以使用gulp进行打字稿管理。 我已成功设法将我的app js文件连接在“build”目标文件夹中。

现在,我想在那里复制我的libs / dependencies,这样我的index.html将有2个脚本包括:myapp.js和类似libs.js(minified angular和可能的任何其他libs)。

我找不到办法做到这一点。我在webpack中得到了一个结果,但它缩小了我在libs.js文件中的所有应用程序,并且我希望我的应用程序分开,以便我可以在非简化的js中为dev模式调试它。

有没有办法从node_modules中提取应用程序的任何必需库,缩小它们并在紧凑的libs.js中连接它们?

当我解析node_modules时,它是一个巨大的存储库(主要是由于与gulp,mocha等东西的服务器依赖关系......对于前端没什么用),我很确定采用所有node_modules / ** / *。js和concat然后不是一个好主意!

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您可以使用browserify。它允许您像在node.js中一样使用require()函数。还有gulp plugin

例如,如果你想使用lodash,首先运行npm install --save lodash,然后在你的javascript中你将拥有:

var _ = require('lodash');
// from here you can use lodash like normal

这些文件既可以由节点服务器编译,也可以由gulp预编译。

编译完成后,文件将与您使用require()

声明的每个依赖项捆绑在一起

修改

要回答您的评论,如果您要导出仅包含库的单独文件,则可以执行此操作

libs.js
window._ = require('lodash');
window.$ = require('jquery');
// any other library
app.js
// here you can use the libraries like normal
console.log(_);
console.log($);
的index.html
<script type="text/javascript" src="js/libs.js"></script>
<script type="text/javascript" src="js/app.js"></script>

但我个人更喜欢只捆绑一个文件。