我正在尝试总结我对最流行的JavaScript包管理器,捆绑包和任务运行器的了解.如果我错了,请纠正我:
npm&bower是包管理员.他们只是下载依赖项,不知道如何自己构建项目.他们知道的是在获取所有依赖项之后调用webpack/ gulp/ grunt.bower就像npm,但是构建了扁平的依赖树(不像npm递归那样).含义npm获取每个依赖项的依赖项(可能会获取相同的几次),同时bower期望您手动包含子依赖项.有时bower并npm分别用于前端和后端(因为每兆字节在前端可能很重要).grunt并且gulp是任务运行者自动化所有可以自动化的东西(即编译CSS/Sass,优化图像,制作捆绑并缩小/转换它).gruntvs. gulp(就像mavenvs. gradle或配置与代码).Grunt基于配置单独的独立任务,每个任务打开/处理/关闭文件.Gulp需要的代码量较少,并且基于节点流,这使得它可以构建管道链(无需重新打开同一个文件)并使其更快.webpack(webpack-dev-server) - 对我来说,这是一个热门重新加载更改的任务运行器,可以让你忘记所有JS/CSS观察者.npm/ bower+ plugins可以替换任务运行器.他们的能力经常交叉,所以如果你需要使用gulp/ gruntover npm+插件,会有不同的含义.但是,跑步者的任务是复杂的任务肯定更好(例如,"每个建设创建捆绑,从ES6 transpile到ES5,在所有浏览器模拟器中运行它,使屏幕截图和部署通过FTP收存箱").browserify允许为浏览器打包节点模块.browserifyvs node的require实际上是AMD vs CommonJS.问题:
webpack&webpack-dev-server?官方文档说它是一个模块捆绑器,但对我来说它只是一个任务运行器.有什么不同?browserify?我们不能对node/ES6导入做同样的事情吗? gulp …bower和之间的根本区别是npm什么?只想要简单明了的东西.我见过我的一些同事在他们的项目中使用bower和npm互换.
我是新手使用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相同?
如果是这种情况,我什么时候应该像这样明确地安装软件包而不将它们添加到管理依赖项的文件中(除了全局安装命令行工具)?
我正在制作一个使用twitter的bower的新项目.我创建了一个component.json像jquery一样维护我所有的依赖.然后我运行bower install它将所有内容安装在一个名为的文件夹中components.但我需要在不同的文件夹中安装组件,例如public/components.
我已经尝试将components.json编辑成:
{
"name": "test",
"version": "1.0.0",
"directory": "public/",
"dependencies": {
"jquery": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
{
"name": "test",
"version": "1.0.0",
"componentsDirectory": "public/",
"dependencies": {
"jquery": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
如https://github.com/twitter/bower/pull/94所示,但它不起作用.
我正在创建我的第一个Bower组件.运行bower init脚本后问我'这个包暴露了什么类型的模块?' 有这些选项:
这些选项有什么区别?
Bower使我能够使用以下语法指定包的版本要求:
"dependencies": {
"<name>": "<version>",
},
Run Code Online (Sandbox Code Playgroud)
但我一直无法找到用于该语法的语法<version>.我知道我可以指定版本:
">1.0.0"">=1.0.0""1.0.0 - 2.0.0".我也知道有一个包含代字号的通用版本语法:"~1.0.0".但我不确定它是什么意思,是否与它相同"=1.0.0".
我也有兴趣知道我是否能够指定多个非连续版本,例如完全1.0.3加上大于1.5.0等的版本等...
我正在尝试在我们组织的数据中心的构建服务器上设置Bower,但是git端口似乎没有在数据中心的防火墙上打开.我可以使用git命令行客户端来克隆https://[repo],但不是git://[repo].
是否有一个开关或首选项将指示bower使用https而不是git协议执行git clone ?
我看过的来源,并认为更改分辨率代码替换git://用https://,但我想我会问之前,我去那些长度.
我使用bower 1.0.0运行以下命令:
mkdir testdir;cd testdir
bower init #accept defaults
bower install jquery -s #the -s is supposed to cause update of bower.json
less bower.json
Run Code Online (Sandbox Code Playgroud)
在bower.json中,我希望看到列出的依赖项,但没有.到底是怎么回事?
注意:bower install jquery --save确实有效
注意:我所指的选项是通过记录 bower help install
**-S**, --save Save installed packages into the project's bower.json dependencies
Run Code Online (Sandbox Code Playgroud) Git已安装并且在路径中.
平台:Red Hat Enterprise Linux 5.8.
>which git
/usr/local/bin/git
Run Code Online (Sandbox Code Playgroud)
然而凉亭找不到它:
bower angular#1.0.6 ENOGIT git is not installed or not in the PATH
Run Code Online (Sandbox Code Playgroud)
建议的解决方法是什么?
下载bower软件包时,Bower安装失败,使用502 - Bad Gateway.
例如,用于ember库的bower安装在命令行中提供以下响应.
EINVRES请求https://bower.herokuapp.com/packages/ember失败,502
当直接从URL访问http://bower.herokuapp.com/时,它会给出以下消息.
此Bower版本已弃用.请更新它:npm install -g bower.新的注册地址是https://registry.bower.io