Grunt,NPM和Bower之间的区别(package.json vs bower.json)

我新使用npm和bower,在emberjs中构建我的第一个应用:)。
我有一些使用rails的经验,所以我很熟悉列表依赖关系的文件(比如bundler Gemfile)

问题:当我想添加一个包(并检查依赖到git中)时,它属于哪里 - 放入package.json或放入bower.json

从我收集的内容来看,
运行bower install将获取该软件包并将其放入/vendor目录中,
运行npm install它将获取它并将其放入/node_modules目录中。

这回答说,鲍尔是前端和npm是后端的东西。
Ember-app-kit似乎从第一眼就坚持了这种区别...但是gruntfile中为了启用某些功能而给出的指令提供了两条明确的命令,所以我在这里完全困惑。

直觉上我会猜测

  • npm install --save-dev package-name将等同于将package-name添加到我的package.json中

  • bower install --save package-name可能与将包添加到我的bower.json并运行bower install相同

  • 如果是这样的话,我应该什么时候明确安装软件包,而不是将它们添加到管理依赖项的文件中(除了全局安装命令行工具)?


    2016年中更新

    事情变化如此之快,以至于如果到了2017年底,这个答案可能不再是最新的了!

    初学者可能很快就会在选择构建工具和工作流程时迷失方向,但2016年最新的版本根本不使用Bower,Grunt或Gulp! 在Webpack的帮助下,您可以直接在NPM中做所有事情!

  • Google“npm as build tool”结果:https://medium.com/@dabit3/introduction-to-using-npm-as-a-build-tool-b41076f488b0#.c33e74tsa

  • Webpack:https://webpack.github.io/docs/installation.html

  • 别误解我的意思,人们使用其他工作流程,我仍然在我的传统项目中使用GULP(但是慢慢地移出它),但是这是如何在最好的公司中完成的,并且在这个工作流程中工作的开发人员赚了很多钱!

    看看这个模板,它是一个非常新的设置,由最好的和最新的技术组成:https://github.com/coryhouse/react-slingshot

  • 的WebPack
  • NPM作为构建工具(不包括Gulp,Grunt或Bower)
  • 与Redux反应
  • ESLint
  • 该名单很长。 去探索!
  • 你的问题:

    当我想添加一个包(并检查依赖到git中)时,它属于哪里 - 放入package.json或放入bower.json

  • 现在一切都属于package.json

  • 编译所需的依赖关系在“devDependencies”中,即npm install require-dir --save-dev (--save-dev通过向devDependencies添加一个条目来更新你的package.json)

  • 运行时应用程序所需的依赖关系在“依赖关系”中,即npm install lodash --save (-- npm install lodash --save通过向依赖关系添加条目来更新package.json)
  • 如果是这样的话,我应该什么时候明确安装软件包,而不是将它们添加到管理依赖项的文件中(除了全局安装命令行工具)?

    总是 。 只是因为舒适。 当您添加一个标志( --save-dev--save )时,管理deps(package.json)的文件会自动更新。 不要通过手动编辑依赖关系来浪费时间。 npm install --save-dev package-name快捷方式npm install --save-dev package-namenpm i -D package-namenpm install --save package-name快捷方式npm install --save package-namenpm i -S package-name


    Npm和Bower都是依赖管理工具。 但两者之间的主要区别是npm用于安装Node js模块,但是bower js用于管理像html,css,js等前端组件

    更令人困惑的一个事实是,npm提供了一些可用于前端开发的软件包,例如gruntjshint

    这些行增加更多的意义

    与npm不同,Bower可以有多个文件(例如.js,.css,.html,.png,.ttf),它们被认为是主文件。 Bower在语义上将这些主要文件打包在一起时考虑一个组件。

    编辑Grunt与Npm和Bower完全不同。 Grunt是一个JavaScript任务转轮工具。 你可以用grunt做很多事情,否则你必须手动做。 突出Grunt的一些用途:

  • 压缩一些文件(例如zipup插件)
  • Linting js文件(jshint)
  • 编译少量文件(grunt-contrib-less)
  • 有用于sass编译的grunt插件,uglifying你的javascript,复制文件/文件夹,缩小javascript等。

    请注意,grunt插件也是一个npm包。

    问题1

    当我想添加一个包(并检查依赖到git中)时,它属于哪里 - 放入package.json或放入bower.json

    这真的取决于这个软件包属于哪里。 如果它是一个节点模块(比如grunt,request),那么它会在package.json中进入,否则进入到Bower json中。

    问题2

    我什么时候应该直接安装软件包,而不将它们添加到管理依赖关系的文件中

    无论您是明确安装软件包还是在.json文件中提到依赖关系都无关紧要。 假设你正在处理一个节点项目,并且你需要另一个项目,比如request ,那么你有两个选择:

  • 编辑package.json文件并添加对'request'的依赖
  • npm安装
  • 要么

  • 使用命令行: npm install --save request
  • --save选项也将依赖项添加到package.json文件中。 如果你没有指定--save选项,它只会下载软件包,但json文件将不受影响。

    你既可以做到这一点,也不会有实质性的差异。

    链接地址: http://www.djcxy.com/p/18053.html

    上一篇: Difference between Grunt, NPM and Bower ( package.json vs bower.json )

    下一篇: Find the version of an installed npm package