gpt4 book ai didi

javascript - 在生产中部署时运行 "bower install"是不好的做法吗?

转载 作者:行者123 更新时间:2023-11-29 19:18:49 25 4
gpt4 key购买 nike

我正在开发一个使用 bower.js 的应用程序;这是我第一次使用 Bower,如果您在我的问题描述中发现任何明显错误,请纠正我。

-------------------------------------------- -

来自 Ruby 背景,我希望包管理器有一个 .lock 文件,在 git 下跟踪,它准确地告诉我当前正在使用的版本。 Bower 似乎不会发生这种情况(我说的对吗?)。

几天前,我删除并重新克隆了我的存储库,然后运行 ​​bower install,认为这样的命令只会安装所需版本的 js 组件。

然后,今天我在一个 javascript 文件中做了一行修复,使用 grunt watch 编译了 application.js,然后意识到 application.js 自动填充了大量来自 bower 的新代码我不知道的组件更新。

我发现我们的 bower 组件在 .gitignore 下,而我几天前运行的 bower install 实际上在我没有注意到的情况下更新了两个组件。

当我意识到发生了什么事时,我立即查看了我们的部署过程,我将其粘贴在这里:

bundle install --path ${SNAP_CACHE_DIR}/.bundle
npm install -g bower grunt-cli
bower cache clean && bower install && bower list
bundle exec cap [our application name] deploy

这很危险吗? bower install 是否会更新所有可能未在我的本地版本中更新且未被 git 跟踪的组件,最终在生产中拥有完全不同的 js 代码?

最佳答案

Is this dangerous? Will bower install update all the components, that are likely not updated in my local version and are not tracked by git, ending up having completely different js code in production?

是的,这可能会发生并且会导致问题。尽管只要您的依赖版本指定为例如,影响将是有限的。 "~1.2.3",将锁定主要/次要版本,只允许补丁级别更新。

bower 相比,包管理器通常用于 node.js 环境 - npm - 有一个名为 npm shrinkwrap 的功能/命令,它会创建一个 npm-shrinkwrap.json 文件来锁定您的依赖版本,以便安全地运行 npm之后安装。这可能是您想要的。

但是,目前的 bower 还没有这个功能——Github 上有关于它的讨论,例如here .

我认为目前有以下选项可以解决您的情况:

  • 取消忽略并提交您的 bower_components(非常丑陋,因为这会在 git 中产生大量噪音)。
  • 指定您的依赖版本直至补丁级别,例如“1.2.3” 而不是 “~1.2.3”
    • 罪魁祸首:如果您的依赖项具有子依赖项,它们可能仍会在次要版本级别上指定,这意味着即使您的直接依赖项具有可预测的版本,您的传递依赖项也可能不会。
  • 停止使用 bower 并改用 npm(界面/可用性方面,恕我直言,它们几乎相同)并使用 npm shrinkwrap 来锁定您的依赖项。

干杯,亚历克斯

关于javascript - 在生产中部署时运行 "bower install"是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com