【问题标题】:How can I manage my Javascript libraries in Grunt? Using Bower or NPM?如何在 Grunt 中管理我的 Javascript 库?使用 Bower 还是 NPM?
【发布时间】:2017-03-10 18:59:31
【问题描述】:
我刚刚学习了如何使用 Grunt,我觉得它很棒;我只关心 Javascript 库,我学到的工作流程是在网络上搜索每个库,然后将它们放在 js/libs 文件夹中,然后使用 Uglify.js 将所有 JS 文件合并到一个文件中,但我没有'认为这不是最实用的方法。我尝试使用 Bower 来管理它,但是所有库都安装在 bower_components 中,因此在 Grunt 中拥有 js/libs 工作流没有意义,因为我必须使用 Bower 安装库,然后将它们导入我的 html 中。在项目中管理这个最常见的工作流程是什么?我不能使用 npm 安装 jQuery、underscore 或 Require.js 等 javascript 库并在我的 Grunt 工作流程中使用它们,而不是每次需要它们时都用谷歌搜索它们吗?我不能使用 bower 在我的 js/libs 文件夹中安装库,而不是创建整个 bower_components 文件夹树吗?
【问题讨论】:
标签:
javascript
npm
gruntjs
bower
【解决方案1】:
我不确定是否有正确的方法来回答这个问题,这是一个常见的工作流程涉及以下内容:
从npm init(或yarn init,如果您愿意的话)开始,然后使用npm install --save jquery(或任何依赖项)。这会将它添加到您的 package.json 中,这意味着如果您清除了 node_modules 目录,您可以调用 npm install 并带上您的所有依赖项。
在那之后,工作流程非常多,我无法为您解答。但是,我要补充一点,npm 4 引入了改进的搜索功能,因此您实际上可以在 npm 中搜索正确的模块。 http://www.npms.io 也是一个有用的搜索站点,npm 站点本身也是一个可靠的选择。
所有关于捆绑和构建工具的东西都是意见,所以不要觉得有一种正确方法可以做到这一点。但是,您确实提到将它们导入到您的 hmtl.xml 中。实际上,您可以使用 webpack 之类的工具将所有 javascript 捆绑到一个捆绑文件中,然后从 html 而不是 jquery、requireJS 等加载它。
希望能解决问题。
【解决方案2】:
Grunt 只是一个任务运行器。 npm 和 bower 以及实际的包管理器。
npm - 通常用于管理节点包和依赖项。
bower - 通常用于管理前端包和依赖项。
这与典型工作流程的匹配方式是,您将通过上述包管理器之一管理依赖项,然后获取 grunt 来缩小和构建您的最终应用程序。