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
你的问题:
当我想添加一个包(并检查依赖到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-name
是npm i -D package-name
和npm install --save package-name
快捷方式npm install --save package-name
是npm i -S package-name
Npm和Bower都是依赖管理工具。 但两者之间的主要区别是npm用于安装Node js模块,但是bower js用于管理像html,css,js等前端组件 。
更令人困惑的一个事实是,npm提供了一些可用于前端开发的软件包,例如grunt
和jshint
。
这些行增加更多的意义
与npm不同,Bower可以有多个文件(例如.js,.css,.html,.png,.ttf),它们被认为是主文件。 Bower在语义上将这些主要文件打包在一起时考虑一个组件。
编辑 : Grunt与Npm和Bower完全不同。 Grunt是一个JavaScript任务转轮工具。 你可以用grunt做很多事情,否则你必须手动做。 突出Grunt的一些用途:
有用于sass编译的grunt插件,uglifying你的javascript,复制文件/文件夹,缩小javascript等。
请注意,grunt插件也是一个npm包。
问题1
当我想添加一个包(并检查依赖到git中)时,它属于哪里 - 放入package.json或放入bower.json
这真的取决于这个软件包属于哪里。 如果它是一个节点模块(比如grunt,request),那么它会在package.json中进入,否则进入到Bower json中。
问题2
我什么时候应该直接安装软件包,而不将它们添加到管理依赖关系的文件中
无论您是明确安装软件包还是在.json文件中提到依赖关系都无关紧要。 假设你正在处理一个节点项目,并且你需要另一个项目,比如request
,那么你有两个选择:
要么
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 )