Faits:
A.
Par jugement du 15 mai 2008, le Tribunal des baux et loyers du canton de Genève a déclaré valable le congé notifié le 24 août 2006 à A._ SNC par les bailleurs composant l'hoirie B._, soit A.B._, B.B._ et C.B._; par ailleurs, une prolongation de bail de six ans, échéant le 30 avril 2013, a été accordée à la locataire au motif qu'elle exploitait son atelier de réparation de véhicules depuis près de quarante ans et que la recherche de locaux comparables était difficile, les bailleurs ne faisant valoir au surplus aucun besoin urgent et acquiesçant à une prolongation de quatre ans.
Le 9 octobre 2012, la régie en charge de la gestion de l'immeuble a rappelé à la locataire que le bail prolongé venait à échéance le 30 avril 2013 et l'a invitée à effectuer jusqu'à cette date diverses remises en état, en particulier à libérer entièrement les lieux, à supprimer les équipements propres à l'exploitation et à dépolluer le site.
La locataire a demandé à bénéficier d'un délai supplémentaire de cinq ans pour quitter les lieux, l'année 2018 correspondant au départ à la retraite de l'un des associés de la société en nom collectif. La représentante des bailleurs a refusé d'entrer en matière; elle déplorait que les mesures nécessaires n'aient pas été prises plus tôt.
Le 13 février 2013, la régie a rappelé à la locataire son obligation de procéder à la dépollution du site - dont le coût était estimé entre 130'000 fr. et 300'000 fr. - ainsi qu'au démontage et à l'évacuation des équipements d'ici au 30 avril 2013.
La locataire a répondu que son projet de garage dans la zone industrielle de X._ avait abouti; elle requérait l'octroi d'un délai supplémentaire de deux ans, les nouveaux locaux devant être livrés aux alentours de Noël 2014. Les bailleurs ne sont pas entrés en matière sur cette demande.
B.
Par requête en protection du cas clair déposée le 24 mai 2013, A.B._, B.B._ et C.B._ ont conclu à la condamnation de A._ SNC à évacuer immédiatement les locaux et à l'exécution immédiate du jugement d'évacuation.
Par jugement du 9 juillet 2013, le Tribunal des baux et loyers du canton de Genève a fait droit à la requête d'expulsion et autorisé les membres de l'hoirie B._ à requérir l'évacuation par la force publique de A._ SNC dès l'entrée en force du jugement.
Statuant le 24 février 2014 sur appel et recours de A._ SNC, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé le jugement entrepris.
C.
A._ SNC interjette un recours en matière civile. Elle demande au Tribunal fédéral d'annuler l'arrêt cantonal, puis, principalement, de surseoir à l'évacuation jusqu'au 1er janvier 2015 ou, subsidiairement, de renvoyer la cause à la cour cantonale ou au Tribunal des baux et loyers pour nouvelle décision dans le sens des considérants.
Le recours est assorti d'une requête d'effet suspensif.
Les intimés et la cour cantonale n'ont été invités à se déterminer que sur l'effet suspensif.

Considérant en droit:
1.
La Chambre des baux et loyers a estimé la valeur litigieuse à près de 30'000 fr. en se fondant sur le loyer convenu et la durée présumable de la procédure d'expulsion. Le Tribunal fédéral peut se rallier à cette appréciation. Le recours en matière civile est ouvert ratione valoris (<ref-law>).
Pour le reste, les conditions de recevabilité de cette voie de droit sont réalisées (cf. art. 42, art. 45 al. 1, art. 72 al. 1, art. 75, art. 76 al. 1 et art. 90 LTF). Demeure réservé l'examen de la recevabilité des griefs articulés dans le recours.
2.
Dans la première partie de son mémoire, la recourante présente sa propre version des faits. Elle reproche ensuite à la cour cantonale d'avoir apprécié les faits de façon arbitraire, mais ne motive pas son grief, se bornant à citer la loi et la jurisprudence. Dans cette mesure, le recours est irrecevable. En effet, le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>); il ne peut s'en écarter que si les faits ont été établis de façon manifestement inexacte - ce qui correspond à la notion d'arbitraire au sens de l'art. 9 Cst. (<ref-ruling> consid. 4.1.2 p. 62; <ref-ruling> consid. 5.1 p. 356) - ou en violation du droit au sens de l'<ref-law> (<ref-law>). Or, la partie recourante qui, sur la base de l'<ref-law>, entend remettre en cause les constatations de l'autorité précédente doit expliquer de manière circonstanciée en quoi les conditions d'une exception prévue par l'<ref-law> seraient réalisées, faute de quoi il n'est pas possible de tenir compte d'un état de fait qui diverge de celui contenu dans la décision attaquée (ATF <ref-ruling> consid. 5.1 p. 356; <ref-ruling> consid. 1.2 p. 187).
3.
La recourante ne remet pas en cause le jugement d'évacuation, mais la mesure d'exécution qui l'accompagne, à savoir l'autorisation délivrée aux intimés de requérir l'expulsion par la force publique dès l'entrée en force du jugement. Invoquant le principe de la proportionnalité et l'art. 30 al. 4 de la loi genevoise d'application du code civil suisse (LaCC/GE; RSG E 1 05), la recourante reproche à la cour cantonale de n'avoir pas admis que des motifs humanitaires justifiaient en l'espèce un sursis à l'exécution de l'évacuation. Elle est en outre d'avis que les intimés ont commis un abus de droit en concluant à l'exécution immédiate de l'expulsion.
3.1. L'exécution forcée d'un jugement ordonnant l'expulsion d'un locataire est régie par le droit fédéral (cf. <ref-law>). Comme l'<ref-law> le permet sur requête de la partie qui a obtenu gain de cause, les autorités cantonales qui ont prononcé l'expulsion en l'espèce ont également ordonné les mesures d'exécution nécessaires, à savoir l'évacuation forcée prévue à l'art. 343 al. 1 let. d CPC.
En procédant à l'exécution forcée d'une décision judiciaire, l'autorité doit tenir compte du principe de la proportionnalité. Lorsque l'évacuation d'une habitation est en jeu, il s'agit d'éviter que des personnes concernées ne soient soudainement privées de tout abri. L'expulsion ne saurait être conduite sans ménagement, notamment si des motifs humanitaires exigent un sursis, ou lorsque des indices sérieux et concrets font prévoir que l'occupant se soumettra spontanément au jugement d'évacuation dans un délai raisonnable. En tout état de cause, l'ajournement ne peut être que relativement bref et ne doit pas équivaloir en fait à une nouvelle prolongation de bail (<ref-ruling> consid. 2b p. 339). Cette jurisprudence, rendue alors que la matière relevait encore du droit cantonal de procédure, reste valable (cf. FABIENNE HOHL, Procédure civile, tome II, 2 e éd. 2010, n° 1474 p. 267).
L'art. 30 al. 4 LaCC/GE concrétise le principe de la proportionnalité en cas d'évacuation d'un logement, en prévoyant que le Tribunal des baux et loyers peut, pour des motifs humanitaires, surseoir à l'exécution du jugement dans la mesure nécessaire pour permettre le relogement du locataire ou du fermier. A supposer que cette disposition ait encore une portée propre dans une matière réglée désormais par le CPC, force est de reconnaître, avec les juges précédents, qu'elle s'applique, selon ses propres termes, aux logements, c'est-à-dire aux habitations. En refusant de s'y référer lors de l'examen d'un éventuel sursis à l'évacuation de locaux commerciaux, la Chambre des baux et loyers n'a manifestement pas appliqué le droit cantonal de manière arbitraire, seul grief que la recourante pouvait soulever dans ce contexte (cf. <ref-ruling> consid. 2.4; <ref-ruling> consid. 4.3 p. 521; <ref-ruling> consid. 1.2 p. 382 s.).
Au surplus, la cour cantonale n'a pas méconnu le principe de la proportionnalité en ordonnant l'exécution immédiate de l'évacuation. Dans un jugement rendu en mai 2008, la locataire a obtenu la prolongation de bail maximale, à savoir six ans (<ref-law>); l'échéance du contrat était ainsi reportée au 30 avril 2013. Ces cinq ans constituaient une durée suffisante pour parvenir à une solution afin que les associés et les employés du garage ne se retrouvent pas sans emploi du jour au lendemain. Or, durant ce délai, la recourante n'a cherché que tardivement de nouveaux locaux. En octobre 2012, six mois avant l'échéance, la locataire demandait encore l'octroi d'un délai jusqu'en 2018 pour quitter les lieux. Elle a lancé un projet de construction au début 2013 seulement et celui-ci, selon les propres explications de la recourante, devrait aboutir deux ans plus tard, le tout restant au conditionnel. En tout état de cause, la recourante ne peut donc invoquer à présent des motifs humanitaires liés aux conséquences économiques fâcheuses d'un arrêt de l'activité du garage. Et les autorités cantonales ne disposaient pas non plus d'indices sérieux et concrets allant dans le sens d'une évacuation spontanée à bref délai, qui auraient pu justifier l'octroi d'un sursis à l'exécution.
3.2. Par ailleurs, les bailleurs n'ont en rien abusé de leur droit en requérant des mesures d'exécution en même temps que l'évacuation. Les intérêts respectifs des bailleurs et de la locataire ont déjà été pris en compte lors de l'examen de la prolongation de bail et de sa durée (cf. <ref-law>). La demande d'exécution immédiate de l'expulsion ne saurait dès lors consacrer une disproportion manifeste des intérêts en présence, laquelle serait constitutive d'un abus de droit. Une absence d'intérêt à l'exercice de leur droit à l'exécution immédiate ou la poursuite d'un but étranger ne peut pas non plus être retenue contre les intimés, du simple fait qu'ils auraient accepté un départ en deux temps - en décembre 2013 et en avril 2014 - moyennant le paiement par la recourante des frais d'évacuation et de dépollution du terrain.
4.
Sur le vu de ce qui précède, le recours, manifestement mal fondé, doit être rejeté dans la mesure où il est recevable, selon la procédure prévue à l'<ref-law>. Partant, la requête d'effet suspensif déposée par la recourante devient sans objet.
Les frais judiciaires sont mis à la charge de la recourante (<ref-law>). Les intimés, qui ne sont pas représentés par un mandataire autorisé et ne font pas valoir de frais particuliers, ne peuvent prétendre à des dépens pour leur réponse à la requête d'effet suspensif.

Par ces motifs, le Tribunal fédéral prononce:
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
Il n'est pas alloué de dépens.
4.
Le présent arrêt est communiqué aux parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 19 mai 2014
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Klett
La Greffière: Godat Zimmermann