当我想添加一个包(并将依赖项签入git),它属于哪里-进入包。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和运行的凉亭安装?
如果是这样的话,我应该在什么时候像这样显式地安装包,而不将它们添加到管理依赖关系的文件中(除了全局安装命令行工具)?
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的一些用法:
压缩一些文件(例如zip插件)
检测js文件(jshint)
编译更少的文件(grunt-contrib-less)
有一些grunt插件用于sass编译,丑陋你的javascript,复制文件/文件夹,缩小javascript等。
请注意,grunt插件也是一个npm包。
问题1
当我想添加一个包(并将依赖项签入git),它属于哪里-进入包。Json或者变成bower。Json
这要看这个包裹是放在哪里。如果它是一个节点模块(如grunt,request),那么它将被放在包中。Json,否则为bower Json。
问题2
什么时候我应该像这样显式地安装包,而不将它们添加到管理依赖关系的文件中
无论你是显式地安装包,还是在.json文件中提到依赖关系。假设你正在做一个节点项目,你需要另一个项目,比如请求,那么你有两个选择:
编辑包。Json文件,并在“请求”上添加依赖项
npm安装
OR
使用命令行:npm install——save request
——save options将依赖项添加到包中。Json文件。如果你没有指定——save选项,它将只下载包,但json文件将不受影响。
你可以用任何一种方式来做,不会有实质性的区别。
2016年中期更新:
事情变化得如此之快,如果到了2017年底,这个答案可能就不再是最新的了!
初学者可能很快就会迷失在构建工具和工作流的选择中,但2016年最流行的是根本不用Bower、Grunt或Gulp !在Webpack的帮助下,你可以直接在NPM中做任何事情!
谷歌"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)时,
它应该放在哪里,放在包里。Json或者变成bower。Json
所有东西都要打包。json现在
构建所需的依赖项在“devDependencies”中,即npm install require-dir——save-dev(——save-dev更新你的包。添加一个条目到devDependencies)
应用程序在运行时所需的依赖项在“依赖项”中,即npm install lodash——save(——save更新你的包。Json)
如果是这样的话,我应该在什么时候像这样显式地安装包,而不将它们添加到管理依赖关系的文件中(除了全局安装命令行工具)?
总是这样。只是因为舒适。当你添加一个标志(——save-dev或——save)时,管理deps的文件(package.json)会自动更新。不要浪费时间手动编辑其中的依赖项。npm install——save-dev package-name的快捷方式是npm i -D package-name, npm install——save package-name的快捷方式是npm i -S package-name