提问者:小点点

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目录。

这个SO回答说bower是用于前端的,npm是用于后端的。
Ember-app-kit似乎从第一眼就坚持了这个区别。但是gruntfile中用于启用某些功能的指令给出了两个显式命令,所以这里我完全搞不懂。

凭直觉我猜

>

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

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

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


  • 共2个答案

    匿名用户

    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作为构建工具(没有吞咽,咕噜或低声)
    • 与Redux反应
    • ESLINT
    • 名单很长。去探索吧!

    您的问题:

    当我想要添加一个包(并将依赖项签入到git中)时,它属于哪里--到package.json中还是到bower.json中

    >

  • 现在所有东西都属于package.json

    构建所需的依赖项位于“devDependencies”中,即npm install require-dir--save-dev(--save-dev通过向devDependencies添加一个条目来更新您的package.json)

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

    总是。只是因为舒适。添加标志(--save-dev--save)时,管理deps的文件(package.json)将自动更新。不要通过手动编辑其中的依赖项来浪费时间。NPM安装--保存-dev package-name的快捷方式是NPM I-D package-nameNPM安装--保存package-name的快捷方式是NPM I-S package-name

  • 匿名用户

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

    一个使这更令人困惑的事实是,npm提供了一些也可以用于前端开发的包,如gruntjshint

    这些线条增加了更多的意义

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

    编辑:Grunt和Npm和Bower有很大的不同。Grunt是一个javascript任务运行器工具。您可以使用grunt完成许多必须手动完成的工作。重点介绍了grunt的一些用法:

    1. 压缩某些文件(例如zipup插件)
    2. js文件上的LINTING(jshint)
    3. 编译较少的文件(grunt-contrib-less)

    有grunt插件用于sass编译,丑化你的javascript,复制文件/文件夹,缩小javascript等。

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

    问题1

    当我想要添加一个包(并将依赖项签入到git中)时,它属于哪里--到package.json中还是到bower.json中

    这真的要看这个包裹属于哪里了。如果它是一个节点模块(比如grunt,request),那么它将进入package.json,否则进入bower JSON。

    问题2

    我什么时候应该像这样显式地安装包而不将它们添加到管理依赖项的文件中

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

    • 编辑package.json文件并添加对'request'的依赖项
    • NPM安装

    • 使用命令行:npm安装--保存请求

    --saveoptions还将依赖项添加到package.json文件中。如果不指定--save选项,它将只下载包,而json文件不受影响。

    你可以这样做这两种方式,不会有实质性的区别。