Yarn: package.jsonに保存せずにパッケヌゞを远加したす

䜜成日 2016幎11月09日  Â·  96コメント  Â·  ゜ヌス: yarnpkg/yarn

package.jsonに觊れずにyarnを䜿甚しおパッケヌゞをむンストヌルする可胜性はないようです。 --saveparamsなしのnpminstallのように。 そのような機胜を远加するべきではありたせんか

最も参考になるコメント

なぜオヌナヌがこんなに意芋を蚀っおいるのかわかりたせん。 あなたがそれの䜿甚法を芋ないならば、それがないずいう意味ではありたせん。 人々がそれを求めれば、それは圌らがそれを必芁ずしおいるこずを意味し、圌らは必ずしも愚かではないず私は信じおいたす。
オプションの--no-saveオプションを远加するず、䞀郚の人々の問題が解決され、欠点はたったくありたせん。

党おのコメント96件

いいえ、この機胜は意図的に省略されおいたす。 package.jsonに反映されずにパッケヌゞをむンストヌルするこずは危険であるず考えられおいたす。 なぜそんなものが存圚したいのですか

Facebookの発衚から

npminstallの「目に芋えない䟝存関係」の動䜜を削陀したしたコマンドを分割したす。 yarn add <name>を実行するこずは、 npm install --save <name>を実行するこずず同じです。

私は物事をテストするためにその機胜をかなり頻繁に䜿甚しおいたした。 特に、私が維持しおいるラむブラリを䜿甚しおいお、リリヌスを䜜成する前に倉曎をテストするためだけにロヌカルバヌゞョン file: depを䜜成するをむンストヌルする必芁がある堎合。

デフォルトでそれを行うnpmの実装は悪い遞択であったこずに同意したすが、これは明瀺的に䜿甚するず䟿利なものだず思いたす。

ええ、明瀺的なフラグでそれを蚱可するのは良いこずだず思いたす。珟圚、これはただnpm i =を䜿甚できたすが、npmの必芁性を取り陀くためだけです。

それはに䞍可欠の倉化だず私たちは、これを明瀺的にサポヌトしおいたせんnode_module 、その埌で拭くこずになるyarn install我々は考えるので、S package.jsonずyarn.lockなければ真実の源。

Windowslibxsltに簡単にむンストヌルできない䟝存関係があるため、次のようになりたす。

  • Windowsの堎合開発者はnode_moduesで解凍したす
  • Linuxの堎合開発者は保存せずにむンストヌルしたすpackage.jsonにある堎合、ビルドが倱敗するため、Windowsを䜿甚しおいる開発者はむンストヌルを実行できたせん

糞を䜿甚しおそれを行うためのクリヌンな方法たたはこの結果を達成するためのより良い方法はありたすか

パッケヌゞはpackage.jsonに反映されるべきであるこずに同意したすが、ここではクリヌンな゜リュヌションを芋぀けるこずができたせん

@GuillaumeLeclerc yarn add -D xxxどうですかpackage.jsonから゚ントリを自分で削陀したすか

次回別のパッケヌゞが远加されたずきに削陀されたすか そうじゃない

@GuillaumeLeclerc残念ながら、はい。

@GuillaumeLeclercコメントをクリヌンアップするこずをお勧めしたす...

package.jsonたたはyarn.lockを倉曎せずにモゞュヌルをむンストヌルできるように、 yarn add --no-saveような匕数を远加しおください。 モゞュヌルにコミットする前に、モゞュヌルをテストする必芁があるこずがよくありたす。

「最倧呌び出しスタックサむズを超えたした」ずいうメッセヌゞが衚瀺されるため、通垞のnpm install䜿甚できたせん。 したがっお、糞はむンストヌルする唯䞀の実行可胜な方法です。

package.jsonyarn.lockぞの倉曎を元に戻さないでください

私にずっお、peerDepをむンストヌルしようずしおいるので、これは私を噛みたす。 Yarnにはinstall間にピアデップをむンストヌルする方法がないため、手動でむンストヌルする必芁がありたす。 package.json / yarn.lockに远加しないずyarn add <package>できたせん。 私は立ち埀生しおいたす。

@viveleroiこれは完党に正しいように聞こえたす。 package.json远加せずに、ピアの䟝存関係をむンストヌルするのはなぜですか

@hpurmann peerDependenciesをdependencies たたはdevDependenciesを䜿甚する堎合は--dev に耇補しおいるためです。 それが意図されおいるのであれば、それは確かに盎感的ではありたせん。

@hpurmann反応コンポヌネントを公開したいので、reactはpeerDepである必芁がありたす。 ただし、プロゞェクトを開発するには、プロゞェクトにreactをむンストヌルする必芁がありたす。

--no-saveを远加するだけです=>それはずおも重芁です
特定のパッケヌゞの特定のオプションの䟝存関係をスキップする必芁がありたす。 私はあなたの糞でそれをするこずはできたせん。 --no-saveオプションを䜿甚しおいる可胜性がありたす。

yarn link local-pkgはlocal-pkgの䟝存関係をホストアプリにむンストヌルしないため、盎接むンストヌルしたいのですが、公開されるずlocal-pkgによっお提䟛されるため、アプリpackage.jsonに保存したせん。 。

なぜオヌナヌがこんなに意芋を蚀っおいるのかわかりたせん。 あなたがそれの䜿甚法を芋ないならば、それがないずいう意味ではありたせん。 人々がそれを求めれば、それは圌らがそれを必芁ずしおいるこずを意味し、圌らは必ずしも愚かではないず私は信じおいたす。
オプションの--no-saveオプションを远加するず、䞀郚の人々の問題が解決され、欠点はたったくありたせん。

AWSLambdaで実行されるNodeJSプロゞェクトにYarnを䜿甚しようずしおいたす。 この機胜がサポヌトされおいない理由にはちょっず驚いおいたす。 私のナヌスケヌスは、ロヌカル開発環境にaws-sdkをむンストヌルする必芁があるずいうものですが、AWS Lambdaがすでに環境にむンストヌルしおいるため、 package.json保存したくありたせん。 aws-sdkを含めるこずは、最終的なパッケヌゞが肥倧化するこずを意味したす。

ダヌンリンクずダヌンアドは共存できたせん。 ダヌンの远加はpackage.jsonに䟝存したすが、ダヌンリンクはロヌカルパッケヌゞを別の堎所にリンクするだけです。

Yに䟝存するパッケヌゞXを開発しおいるずするず、あなたはXずYの䞡方の開発者であるため、XずYをロヌカルに保持し、YをXのディレクトリにリンクしたす。Xにyarn addを実行するず、ワむプアりトされたす。 Yぞのリンク。

これをどのように回避したすか

〜そのような堎合は、パッケヌゞjsonたたはyarn.lockにフットプリントを䜜成せずに、npm-commandsを䜿甚しおむンストヌルできたす〜

〜 npm install [packages ...] --no-save --no-package-lock 〜

@heikomatが以䞋に述べるように、npm5はむンストヌル埌に自動プルヌニングを䜿甚するためhttps://github.com/npm/npm/issues/16853 + https://github.com/npm/npm/pull/18921を参照、これはオプションではなく、node_modules-folderを完党に壊す可胜性がありたす。

さお、今はnpmなしでは生きられたせん

ロヌカルサブモゞュヌルの䟝存関係をメむンnode_modulesにむンストヌルするスクリプトの1぀でnpm installを䜿甚しおいたした。 これはnpm4で正垞に機胜しおいたすが、npm5はむンストヌル䞭に䞀郚のパッケヌゞを削陀するこずを決定するため、npm5では完党に機胜したせん-.-https://github.com/npm/npm/pull/18921を参照

そのため、スクリプトのnpm installをyarnに眮き換えようずしたしたが、むンストヌル䞭にyarnが垞にロヌカルサブモゞュヌルのpackage.jsonsに接觊する堎合は、実際にはそれを行うこずができたせん。私のスクリプトは静かに乱雑になり、糞の埌で「クリヌンアップ」したす

すでに--no-lockfileオプションがあるので、node_modulesフォルダヌが考えられなくなりたす。
ただし、開発者はpackage.jsonを䞍倉に保぀ための回避策が必芁です。

ありがずうございたした。

私は、誰かがモゞュヌルをむンストヌルするための圌らの独特のナヌスケヌスを説明するが、それを蚘録しないたびに、メンテナが戻っおきお圌らのシボレスを暗唱する方法が奜きです。 道埳的な倱敗に苊しんでいる人々から来おいるのず同じように倚くの異なる人々からの同じ芁求を受け入れるこずができれば、あなたの頑固さに自信を持っお簡単に感じるこずができなければなりたせん。 劥協案ずしお、スむッチに--i-am-a-heritic-and-a-bad-programmerずいう名前を付けるこずができたすか

yarnがnpmから保持しおいる1぀の重芁な欠陥を芋るのは悲しいこずですが、それは組織倖の誰にずっおも敵察的です。

そしお私の堎合、4297問題の回避策ずしおそれを䜿甚したかった:)
開発者が物事を行うこずを人為的に制限するず、特定の状況で補品が䜿甚できなくなる可胜性がありたす。

冗談でしょ これは悲劇です。 すべおの開発者ワヌクフロヌがどのように機胜するかを指瀺するのはやめおください。 これがたさにNPMが私たちに合わなかった理由であり、私たちはYarnに移動したした。 「package.jsonずyarn.lockは信頌できる情報源でなければならない」ずいうこのむデオロギヌは無意味です。 パッケヌゞは、゜ヌスコヌドを倉曎せずにむンストヌル可胜である必芁がありたす。 そのような単玔な。

さあ、メンテナ。 コミュニティがこれを本圓に必芁ずしおいるこずは明らかです。 フィルタリングされおいない、芋圓違いの哲孊でむンテリゞェントな䌚話をシャットダりンするのをやめおください。

requireをテストする必芁のあるモゞュヌルがあり、テストするにはサンプルモゞュヌルを./node_modulesにコミットする必芁があるため、 yarnがテストに倱敗するこずがわかりたした。 yarn installを実行するず、Yarnがサンプルモゞュヌルを削陀しおいたす。 もっず「真実の源」の衒孊者だず思いたす。

ナヌスケヌス私が䜿甚するツヌル

これは、Angularスタむルガむドにcodelyzerを䜿甚するこずで非垞に苛立たしいこずですが、チヌムの他のメンバヌは䜿甚せず、コヌドの機胜に圱響を䞎えたせん。 今それを機胜させる唯䞀の方法は、それを私のダヌンロックに远加し、私のダヌンロックが実際に倉曎されおいないず仮定するか、私のチヌムがダヌンを䜿甚しおいおもnpmを䜿甚するこずです。 これらは䞡方ずも恐ろしいオプションです。

すでに2018幎ですが、有効なナヌスケヌスが倚数あるにもかかわらず、この機胜はただ远加されおいたせん。

これが圹立぀理由をもう1぀挙げるず、次のようになりたす。

新しいバヌゞョンをむンストヌルしおテストを実行し、それをpackage.json / *.lock保存しおその倉曎をコミットするか、゚ラヌが発生した堎合はロヌルバックするこずで、䟝存関係を自動的に曎新するスクリプトがありたす。 叀いバヌゞョンを蚘憶しお明瀺的にaddingを再床実行する代わりに、 yarn再床実行する方がはるかに簡単です。

さらに、テストを䞭断せずにこの䟝存関係を実際に曎新できるこずを「絶察に」確認する前に、信頌できる唯䞀の情報源 package.json を倉曎しない方がクリヌンです。 今のずころ、コヌドを壊す䟝存関係を含むpackage.json 䞀時的であっおもになりたす。

この問題には倚くの有効なナヌスケヌスがありたす。 䜜成された堎合、yarnpkgのメンテナはPRを喜んで受け入れたすか

ただこのプロゞェクトに参加しおいる堎合は、 送信しおください...

それたでの間、 package.jsonのscriptsセクションで次のスクリプトを䜿甚したす。

"scripts": {
  "install-sneaky-package": "npm install -g sneaky-package && cp -r $(npm root -g)/sneaky-package ./node_modules/sneaky-package"
}

毛糞の代替品があるず思いたすか

代替手段はありたせん。npm5は私の人生ずしお厄介です。

たた、シンボリックリンクを.binフォルダヌにコピヌするこずを忘れないでください。 ;

私にずっお、 chmod 444 package.jsonずyarn add XXXX --no-lockfile 、少なくずもロヌカル開発ずテストの問題を回避したす。
远加は予期されるアクセス蚱可゚ラヌで終了したすが、远加されたモゞュヌルは埌でnode_modulesに存圚し、ロヌカルにむンストヌルされおいるがpackage.jsonに氞続化されおいないピア䟝存関係で、ピア䟝存関係ずしおテストできたす。

why-is-node-runningように、䞀時的にデバッグラむブラリが必芁になるこずがありたす。 䞀床䜿甚した埌でそれを取り陀きたいず思うこずはわかっおいたす。 --no-saveオプションを䜿甚するず、䟝存関係を汚染するリスクを冒すこずなく、むンストヌルしお忘れるこずができたす。

私はLernaを䜿甚しおいたすが、プロゞェクトは前のステップで既にビルドされおおり、アヌティファクトが匕き継がれおいるため、公開段階でCIステップの1぀に_only_Lernaをむンストヌルしたいだけです。 それは有効なシナリオですか

この機胜が利甚可胜であれば、いく぀かの手順を節玄できたす。
私のnode_modulesはずにかく.gitignoreにありたす。

の代わりに

git clone external-package (needed for temp testing only)
yarn install
yarn link

元のリポゞトリに戻る
yarn link external-package

ただ
オリゞナルリポゞトリ
yarn install external-package --no-save

ビルドパむプラむンの䞀郚ずしお、nspをむンストヌルしお実行し、dependency-check.xmlを゚クスポヌトする必芁がありたす。

この単玔なツヌルのむンストヌルをパッケヌゞリストに反映する必芁がある理由がわかりたせん。タグをプッシュする前に、倉曎を元に戻すためにgit checkout ${BRANCH_NAME}を実行する必芁があるこずを意味したす。

゜ヌスを倉曎しようずはしおいたせん。 私はしたくありたせん、そしおそれは私のビゞネスではありたせん、それは私の組織の開発チヌム次第です。 あなたは私の人生を抜象的な哲孊のために少し難しくしおいたす。 やめお。

䜕か考えがありたすが、なぜこの問題は解決されたのですか --no-saveスむッチがPRに远加されたしたか

䟝存関係から持ち蟌たれたモゞュヌルのバヌゞョンを倉曎したい堎合がありたす。 たずえば、別のdev䟝存関係によっお持ち蟌たれた@types/sinonは、最近私のtscを壊したした。 開発者の䟝存関係に@types/sinonを远加したくないのですが、䜜業を続けるこずができるように、 yarn add @types/[email protected] --no-saveバヌゞョンを手動で倉曎したいず思いたす。 代わりに、npmに切り替えたす。 超むラむラする。

プラットフォヌム固有のバむナリのハック自䜓である本番環境のみの䟝存関係appdynamicsがありたす。 開発マシンでは必芁ないこずがわかりたした。 yarn add ... --no-saveを远加するず、スクリプトがpackage.jsonを危険にさらすこずなくクリヌンにデプロむできたす特にpackage.jsonは、各スクリプトたたは䟝存関係の目的を説明するコメントを付けるこずができないため

cc @kittens @hpurmann

この非垞に人気のある問題に察凊するか、解決枈みずしおロックしおください。 䞊蚘のすべおの批刀に応えお具䜓的な回答をいただければ幞いです。

そしお、コミュニティはこの機胜を提䟛する準備ができおいたす。そのようなプルリク゚ストを受け入れるかどうかをお知らせください。 ありがずうございたした。

ハハ、ただ実装されおいない、niiiiice

なぜそんなものが存圚したいのですか

JSXが最初にテンプレヌトずロゞックの混合を発衚したずきに人々が蚀っ​​たのずたったく同じこずでした。 それが可胜であり、そのナヌスケヌスがある堎合、正しい質問はなぜそうではないのでしょうか ぀たり、これはフラグであり、デフォルトの動䜜ではないため、yarnに明瀺的に䌝えおいたす別名、私が䜕をしおいるのかを知っおいたす。

@kittens @hpurmann
私はreactに基づいお耇数のパッケヌゞを持っおおり、これらにはサブモゞュヌルの䟝存関係がありたす。 だから私はpeer-depずしおreactずreact-domを持っおいたすが、これらのパッケヌゞを個別にビルドする必芁があるずきは、reactずreact-domが必芁です。
これは、パッケヌゞをdepずしお远加せずにロヌカルにむンストヌルするための適切なナヌスケヌスになるず思いたす。
私のプロゞェクトでこのような些现な䜿甚のためにnpmを䜿甚したくありたせん。
--no-save䌌たものを埅っおいる曎新。
開発者がその副䜜甚を認識しおいるず仮定するず、コミュニティが芁求する堎合、機胜を远加しおも害はないず思いたすyarnむンストヌルを実行するずすぐにロヌカルパッケヌゞが倱われたす。
ありがずう

䟿利なトリックはyarn add --dev pkg && yarn remove pkgです。 それは同じこずをしたす。 ロックファむルはそれ以前の状態のたたなので、そのたたです。

これは@Legendsによっお以前に蚀及され

堎合によっおは、必芁なパッケヌゞを別のフォルダヌにむンストヌルし、必芁なパッケヌゞを远加された堎所にyarn linkむンストヌルするこずを回避できたす。 それは理想的ではありたせんが、助けるこずができたす。

cd /third-party
yarn add foo
cd node_modules/foo
yarn link

cd /my-project
yarn link foo

@silentorbは絶察に䟡倀がない、私芋。 add + removeは、npmの--no-saveで行われるこずずたったく同じです。 システムリンクを混乱させたり、ロックファむルに悪い方法で觊れたりするこずはありたせん。぀たり、 yarn remove埌も同じです。
蚀うたでもなく、プログラムでそのこずを実行したい堎合は、間違いなくdirを䜜成したり、リンクしたりするこずはできたせん。

ある堎合

䟋えば 確かにかなり奇劙なもの

@hpurmann @kittens

では、ピアの䟝存関係を持぀パッケヌゞを開発するための掚奚される方法は䜕ですか

たずえば、パッケヌゞにReactをpeerDependencyずしお持っおいる堎合、むンポヌトを解決するために、それをdevDependencyずしおも远加する必芁がありたすか

https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb/package.jsonを芋るず、答えはむ゚スだず思いたす

@ 18stepsはhttps://www.npmjs.com/install-peersをチェックアりトし

この機胜を䜿甚する状況がいく぀かありたす。

CIラむフサむクルず同じように、カバレッゞレポヌタヌを远加したした。 しかし、それらをpackage.jsonに移動するこずはできず、 NPM公開に圱響したす。

保存するかしないか、この遞択はツヌルではなく開発者自身に任されるべきだず思いたす。

さお、これをメンテナの芖点から芋おみたしょう。 玠朎な--no-save゜リュヌションの欠点は間違いなくわかりたす。 ここではあたり詳しく説明しおいたせんが、鋌の男を䜜っおみたす。 倚分圌らは私を正すこずができたす。 劥協点を芋぀けるこずができるかもしれたせん。 @kittens @hpurmann

申し蚳ありたせんが、これは私が意図したよりも長くなりたした。

最新のノヌドおよびWebアプリケヌションの䟝存関係管理は少し混乱しおいたす。 それでも、重耇排陀や再珟可胜なビルドなどの機胜を備えた、信頌性の高い自動化ず䞀定レベルの制埡ず予枬可胜性の䞡方を提䟛するシステムが必芁です。

耇雑さを把握するには、䜕がむンストヌルされおいるのか、その理由を知る必芁がありたす。たた、矛盟を解決するための信頌できる唯䞀の情報源が必芁です。 明らかなこずを述べるリスクを冒しお、 node_modules自䜓はこれらの圹割のいずれも果たすこずができたせん。 トラバヌスするには遅すぎ、送信するには倧きすぎ、バヌゞョン管理にはきめが现かく、「理由」の偎面を゚ンコヌドできたせん。 そのため、 package.jsonずyarn.lockたす。

Yarnは、むンタヌフェヌスを介したアクセスを制限するこずにより、 node_modulesの耇雑さをカプセル化したす。 カプセル化を砎らないこずを玄束した堎合、重耇排陀や再珟可胜なビルドなど、䞀定の保蚌が埗られたす。 package.jsonずyarn.lockに察応する倉曎を加えずに、 node_modulesにむンストヌルするず、それらの保蚌は倱われたす。

さらに、それは倚くの開発者が明確に認識しおいない暗黙の契玄です。 圌らがそれを壊すずき、圌らは故意にそうしたせん。 したがっお、問題が発生した堎合、Yarnは䞍圓に非難される可胜性がありたす。 さらに、足で自分を撃぀のが難しいツヌルを䜜るこずは悪い蚭蚈哲孊ではありたせん。

ただし、劥協する理由はいく぀かありたす。

  • ここには明確な必芁性があるようです。 䞊蚘のコメントにリストされおいる倚くのナヌスケヌスず、「賛成」/「反察」の比率を芋おください。 そのような䞀方的な反応に盎面したメンテナの明らかな頑固さは、ダヌンの芋栄えを良くしたせん。

  • すべおの人に圹立぀可胜性のある解決策が芋぀かりたす。 たずえば、新しいファむルyarn.local.lock導入したす。 開発者はそれを.gitignoreに入れ、 --no-saveフラグずその䟝存関係ずずもにむンストヌルされたすべおのパッケヌゞの蚘録を保持したす。

    yarn.lockこれから分離しおおくために、「ロヌカル」䟝存関係ツリヌの重耇排陀ずフラット化が制限されおいたす。 ロヌカルロックファむルは、メむンロックファむルのバヌゞョンず䞀臎するように適応する堎合がありたすその堎合は重耇排陀が、その逆はできたせん。 その結果、倚くの掚移的なロヌカル䟝存関係がnode_modules平坊化されない可胜性がありたす。

    この゜リュヌションにより、Yarnは匕き続きすべおのパッケヌゞを远跡でき、開発者はリポゞトリを汚染するこずなくむンストヌルでき、再珟可胜なビルドを保持したす。  devDependenciesセクションのあるpackage.local.json䜙地もありたすが、それが必芁になるかどうかはわかりたせん。

  • ずにかく欲しいものを手に入れるために、人々はすでに回避策を䜿甚しおいたす。そのうちの少なくずも3぀は䞊蚘のコメントで説明されおいたす。 しかし、それらは䜿甚するのに䞍䟿であり、同じ保蚌を提䟛せず、開発者がそれらを理解するためにYarnず戊うこずを芁求したす。 それは䞡方の䞖界の䞭で最悪です。

私は䜕かを逃したかもしれたせんが、これは持぀䟡倀のある䌚話のようです。

別のナヌスケヌスがありたす。モゞュヌルをREPLで䜿甚できるようにしたいのですが、コヌドで䜿甚する぀もりはありたせん。 珟状では、別のフォルダヌに移動しおそのモゞュヌルをむンストヌルし、 ../other-project/data/xyz.jsonを䜿甚しおいく぀かのjsonファむルをむンポヌトする必芁がありたす。

しかし、モゞュヌルをむンポヌトしたいのに、盞察パスを䜿甚しお他のモゞュヌルをむンポヌトする堎合は、問題が発生したす。

保存せずにモゞュヌルをnode_modulesむンストヌルさせるだけで、すべおがはるかに簡単になりたす。

メンテナがこの考えにどれほど抵抗力があるかに驚いおいたす。

よろしくお願いしたす。前のコメントを読んだだけで、メンテナの態床はがっかりしおいたす。 フレヌムワヌクラむブラリに䟝存する倚くのフレヌムワヌク固有のプラグむンを開発しおいたすが、それらをハヌド䟝存関係ずしおプラグむンに远加するこずは避けたいず思いたす。

peerDependenciesで定矩された特定のパッケヌゞに䟝存するプラグむンがありたすが、他の倚くの人がすでにコメントしおいるような問題は、䟝存関係をpackage.json远加せずにロヌカルにむンストヌルする方法です。ファむル たあ、できたせん。

私が芋぀けた唯䞀の解決策は、 peerDepenciesをdevDependenciesずしおむンストヌルするこずです。これはたったく理想的ではありたせんが、問題を回避できたす。 恐ろしい状態の少なくずもnpmは、 package.jsonファむルを倉曎せずにむンストヌルされたす。

@hpurmann @kittens

コミュニティぞの察応をあきらめたしたか 明らかに、この問題を無芖しおも䜕の恩恵も受けず、なくなるこずもありたせん。 誰かが仕事をしおPRを提出するかどうかずいう単玔な質問に答える぀もりさえないのであれば、これをオヌプン゜ヌスプロゞェクトず呌ぶ意味は䜕ですかそれを受け入れたすか

@viveleroiが圌の非垞に有効なナヌスケヌス倚くの人が持っおいるようですを説明した盎埌に、私はおそらく少し前に答えるべきでした。 圓時、私は圌の反応を高く評䟡したしたが、それは明らかに泚目を集めるのに十分ではありたせん。

私は自分の考えを倉えたした。 通垞、人々は倚くのこずを望んでおり、メンテナがすべおの機胜を受け入れおいる堎合、゜フトりェアは肥倧化したす。 私はこのナヌスケヌスを持っおいたせんが、倚くの人がそれを望んでいるのを目にしたす。

でも䜕も決められたせん。 私はこのプロゞェクトのメンテナではありたせん。

@Vheissu yarn add --peer <dep>の問題は䜕ですか

私にずっおはyarnadd --peer別のパッケヌゞを远加するたで機胜したす。远加するず、既存のピアdepsがロヌカルむンストヌルから削陀され、手動で読み取る必芁がありたす。

今日はexpressを䜿甚しおラむブラリの実装䟋を曞いおいるので、この機胜が必芁ですが、私のコヌドはどれもexpressに盎接䟝存しおいたせん。 Expressをむンストヌルしたり、Expressに䟝存したりしたくないのですが、珟圚のディレクトリにむンストヌルしたいず思いたす。

ただ、ブレンダン・ハヌリヌ@suyanhanx @のように、私はCIではなく、ロヌカルにむンストヌルするこずを䟝存関係を持っおいたす。
node_modulesを膚らたせたり、プロゞェクトに取り組むすべおの開発者に時間ずスペヌスを費やしたりする必芁がないように、ロヌカルの䟝存関係を最小限に抑えたいず思いたす。

CIで必芁であるが、ロヌカルでは必芁ずされないパッケヌゞ

  • CI固有のツヌルセマンティックリリヌス、greenkeeper-lockfile
  • カバレッゞレポヌトツヌルcodacy-coverage、coveralls
  • CIのテストレポヌトツヌルjest-junitなど。

この機胜が必芁な理由は次のずおりです。

yarn linkを䜿甚しおも、パッケヌゞの䟝存関係はリンクされないため、にむンストヌルする必芁がありたす。
リンクされた宛先-これらの倖郚䟝存関係をpackage.json远加するず、非垞に䞍䟿になりたす。

yarn linkは䟝存関係を远加するか、宛先package.jsonを陀倖する方法を提䟛する必芁がありたす

私にはかなり難解なナヌスケヌスがありたすが、これは私にずっお圹に立ちたす。 yarn.lockずpackage.jsonが真実の源であるこずが重芁である理由を完党に理解しおいたす。たた、 --no-saveコマンドを䜿甚するず、埌続のyarn倉曎が消去されるこずを理解しおいたす。

そうは蚀っおも、 yarnが私を信頌しお、私が䜕をしおいるのかを知っおもらい、 --no-saveフラグを枡すこずができるようになるこずを願っおいたす。 問題のいずれかに遭遇した堎合、䜕が悪かったのかを正確に知るこずができ、自分のせいにするだけです。 スマむル

私のナヌスケヌス
私は64ビットのwinマシンを実行しおいたす。
補品マシンは32ビットです。

パッケヌゞを曎新しない限り、ノヌドずSassの䟝存関係は32ビットのみをサポヌトしたす。

開発マシンをサポヌトするためにpackage.jsonたたはyarn.lockの䟝存関係を倉曎したせん。
したがっお、64ビットをサポヌトするために最新のnode-sassをロヌカルにむンストヌルしたいのですが、package.jsonずyarn.lockには圱響したせん。

VSCodeでのオヌトコンプリヌトを改善するために、 package.json / yarn.lockを汚染せずに、TypeScript以倖のプロゞェクトに@types/*パッケヌゞをむンストヌルしたいず思いたす。

私は糞のワヌクスペヌスでlernaを䜿甚しおいたす。
@ types / react @
Antdは週末にこれを修正したす。
しかし、珟圚のpackage.jsonに圱響を䞎えるこずなく、手動で@ types / [email protected]の修正バヌゞョンをworkspaceRootにむンストヌルするようにyarnを匷制する必芁がありたす最新バヌゞョンが自動的にむンストヌルされるため。

package.jsonに保存するずいうデフォルトの動䜜を維持するこずは正しいですが、開発者がpackage.jsonに圱響を䞎えずにモゞュヌルをむンストヌルする必芁がある堎合が実際にありたす。 特に、䞀郚のパッケヌゞに予期しない重倧な倉曎があった堎合。

パッケヌゞを暗黙的に曎新し、package.jsonに暗黙的に保存するず、競合が発生したす。

別のナヌスケヌスがありたす。 私はReactラむブラリを維持しおいたす。 新しいバヌゞョンを公開する前に、 reactずreact-domいく぀かのバヌゞョンに察しおテストを実行しお、倉曎が埌方および前方 @next ず互換性があるこずを確認したいず思いたす。 以䞋の蚭定を䜿甚しおこれを行っおいたしたが、Yarnのワヌクスペヌスを䜿甚したいので、Yarnに移行する必芁がありたす。

"test:backwards": "npm i [email protected] [email protected] --no-save && npm test",
"test:forwards": "npm i react<strong i="9">@next</strong> react-dom<strong i="10">@next</strong> --no-save && npm test",
"test:latest": "npm i react<strong i="11">@latest</strong> react-dom<strong i="12">@latest</strong> --no-save && npm test",
"test:compat": "npm run test:backwards && npm run test:forwards && npm run test:latest"

このスクリプトでpackage.jsonを倉曎するこずはできたせん。倉曎するず、ステヌゞングされおいない倉曎が原因で公開コマンド pack publish が倱敗するためです。

package.jsonファむル読み取り専甚ファむルマりントの可胜性がありたすに觊れずに、テスト目的でCIパむプラむンにパッケヌゞを远加したいず思いたす。
これらは開発コンポヌネントの䞀郚ではありたせん。
開発マシンでの開発およびテスト䞭はむンストヌルせず、ビルドおよび補品化䞭はむンストヌルしないでください。テスト䞭にCIサヌバヌでのみ必芁か぀受け入れられたす。

これはnpmを䜿甚するだけで機胜したすが、yarnはnpmの䟝存関係を取り陀くこずができるはずです。
これにより、yarnのみではなくnpmのみを䜿甚できるようになる可胜性がありたす。

たた、npmができるこずを実行できないため、npmを完党に眮き換えるこずができるずいう玄束を砎るだけです。

たた、これは通垞のナヌスケヌスではなく、゚ッゞのナヌスケヌスである必芁があるため、この機胜をフラグの背埌に完党に隠したす。

冗談ですか  簡単なスむッチを远加するのに3幎

別のナヌスケヌスコミット前のチェックにnpmパッケヌゞ git-hoooks を䜿甚したす。 チヌムの党員がノヌドをむンストヌルしおいるわけではないので、それをpackage.jsonに含めるず、䞀郚の人のコミットが壊れおしたいたす。 だから私はgit-hooksをむンストヌル/削陀するこずでフックを䞀時的に有効/無効にするnpmスクリプトを䜜成しようずしおいたす。 この䞀芋単玔で簡単な䜜業を糞で達成するこずは事実䞊䞍可胜であるこずに気づいたこずに非垞に倱望したした。

心配なのは、yarn.lockがnode_modulesの内容の真実の゜ヌスではなくなるずいうこずですが、それに぀いお䜕が悪いのでしょうか。 既存の関数は、远跡されおいない䟝存関係の存圚を単に無芖するこずはできたせんか 糞は玠晎らしいツヌルであり、メンテナはJSコミュニティに玠晎らしいサヌビスを提䟛しおきたしたが、この決定を再考する必芁がありたす。

冗談ですか  簡単なスむッチを远加するのに3幎

@spanasikず@Ryuurock 無料で提䟛されおいる高品質の゜フトりェアに぀いお話し合うずきは瀌儀正しくしおください。

スむッチが耇雑すぎお実装できないため、これは「3幎」かかりたせんでした。これは、メンテナがナヌザヌにずっお正味のメリットになるず確信しおいないためです。 これに同意できない堎合は、その機胜に぀いお議論しおください。

@NickHeinerは、10画面の匕数です。 そしお、欲求䞍満を匕き起こす䞻なこずは、メンテナが玍埗しおいないずいうこずではなく、それを無芖しおいるずいうこずです。人々が「これに同意しない堎合は、機胜に぀いお議論する」堎合は、議論に答えないでください。 そしお、人々が欲求䞍満を感じるずき、もちろん圌らは䞍快なコメントを残したす。 すべおをナヌザヌのせいにしないでください。

私は、メンテナがここでの議論に取り組むほうがよいこずに同意したす。 数幎にわたっお幅広い人々から明らかに関心が寄せられおいたす。 したがっお、 @ spanasikず@Ryuurockが単に「議論をする」べきであるずいう私の提案は、ここの他のすべおのように無芖される可胜性が高いため、䞍合理です。

そしお、人々が欲求䞍満を感じるずき、もちろん圌らは䞍快なコメントを残したす。 すべおをナヌザヌのせいにしないでください。

同意したせん。 この無瀌さはただ有甚な前進ではなく、倧人の間で受け入れられる行動でもありたせん。 倱瀌であるこずは、メンテナがこれをさらに無芖するこずを正圓化するための優れた方法です。「スレッドはただのトロヌルです」。

前進するための建蚭的な方法

  1. 他のチャネルのこのスレッドにメンテナの泚意を匕きおそらく無芖しおいるかもしれたせん、同意しなくおも、少なくずもここでの議論を認めるように䟝頌したす。
  2. 糞をフォヌク/亀換し、人々がより幞せな方法でプロゞェクトを管理したす。

䟿利なトリックはyarn add --dev pkg && yarn remove pkgです。 それは同じこずをしたす。 ロックファむルはそれ以前の状態のたたなので、そのたたです。

テスト枈み-動䜜したせん。

私のナヌスケヌスは次のずおりです。
䞀郚のパッケヌゞには、「require」でロヌドされるオプションのアドむンがありたす。 これらのアドむンをdevDependenciesセクションに远加したくないので、「yarn add my-add-in」を実行しお、package.jsonファむルから手動で削陀したす。 私のクラりドCIパむプラむンでは、「npm i」を䜿甚しおそれらを远加したすテスト甚。 ロヌカルパむプラむンでは、䜙分なロックファむルが䜜成されるため、npmを䜿甚したくありたせん。 私の最善の遞択肢は、npmを䜿甚しおから、ロックファむルを削陀するこずです衚瀺されおいる2番目のバヌゞョンの真実を削陀するため。

したがっお、すべおを読んだ埌、メンテナぞの私の質問は次のずおりです。

  • なぜそんなに䞀貫性がないのですか
  • この哲孊をすべおの機胜に実装しおみたせんか

    • ぀たり、私たち党員のために物事をどのように行うべきかを決定し、すべおの機胜から他のすべおのオプションを削陀したす。 コヌスにずどたりたす 自分に玠盎にいお

吊定できない事実は、優れた゜フトりェアはナヌザヌが自分の状況に最適なものを遞択できるようにするため、すべおの優れた゜フトりェアには構成蚭定があるずいうこずです。 そしお、垞に「package.json」ファむルに觊れるこずは良い習慣ですが、この哲孊のために「yarn」がタスクに察応できないずいう゚ッゞケヌスが存圚したす。

シンプルで速いので、私は本圓に糞が奜きです。 メンテナが確実に負ける戊いを戊っおいるのは本圓に残念です-コミュニティは物事を機胜させるために遅い信頌できるnpmに戻るこずを䜙儀なくされおいるからです。

少し枩床を䞋げたしょう。 誰もが嫌悪感を感じる必芁はありたせん
圌らが無料で䜿甚するこずを蚱可されおいる゜フトりェアの䞀郚。

2020幎1月15日氎曜日23:17山厎肇Vukelic <
[email protected]>は曞いた

糞が私をある意味で働かせおくれるこずにうんざりしおいたす。 私はするのが奜きです
自分で物事を決めるのですが、ツヌルが私にどのように教えおくれるのかが気に入らない
うたくいくはずで、私の知性が問題の䞭で最も少ないこずを䟮蟱し、そしお
物事を成し遂げるこずができないこずは、矀を抜いお最倧です。

完璧なルヌルを信じ、その機䌚は決しおないだろうず信じるこず
それらを壊すのはナむヌブです。 「ベストプラクティス」ず「ベストプラクティス」には違いがありたす
「ドゥヌオアダむ」。 オリバヌりェンデルホヌムズシニアが蚀うように

若い男は芏則を知っおいたすが、老人は䟋倖を知っおいたす。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTAZRWD3XJQEGH5N5RL3Q6ACZNA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AAGKTAZSB4FNAIFLZIL547LQ6ACZNANCNFSM4CVUKFMA
。

あなた自身のパッケヌゞマネヌゞャヌを䜜っおください、誰もあなたに䜕もさせたせん。

たったく怒っおいたせん。ロゞックの゚ラヌを指摘するだけです。

糞は私を特定の方法で働かせたす。

糞はあなたに䜕もさせたせん、圌らは無料でツヌルを䜜りたした、そしおそれは特定の方法で働きたす。 気に入らない堎合は、他のものを䜿甚しおください。

@foxbunny嫌悪感を明確にしおいただきありがずうございたす。 :)

この堎合、それが合理的で嫌悪感を芚えるず信じおいおも、この無料で利甚できるツヌルを䜜成した人々ず話すための䞁寧な方法は蚀語ではないず思いたす。 敬意を払いながら建蚭的なフィヌドバックを送るこずができたす。

@whitecolorチヌムはポむントを獲埗したした。 そのオプション--saveはばかげおいたす。 ダヌンは、node_modules、package.json、およびロックファむル間の平衡を保蚌したす。これはすばらしいこずです。 それはより安党です.... npm--saveは危険です。 䜕床もがっかりしたした

止めお䞋さい

たたは、誰もが自分の考えどおりに機胜するツヌルを䜿甚しお、萜ち着いおはどうでしょうか。

私のナヌスケヌスは

アプリのサブ䟝存関係を曎新したい
この䟝存関係をyarn linkにリンクしたす
次に、アプリでリンクされたものを䜿甚したす
ラむブラリに䟝存関係を远加したす
远加されたlib䟝存関係は、 yarn install wtf no.1の埌にメむンアプリにむンストヌルされたせん
次に、アプリに保存せずにすばやく远加しお、ラむブラリに曎新を公開する前に機胜するかどうかを確認できるようにしたす。
しかし-いいえ。

ありがずう

コミュニティが䜜者に無芖されおいるのを芋お申し蚳ありたせん。

オヌプン゜ヌスのボランティアずしお、銖尟䞀貫した哲孊たたは
プロゞェクトは倧きな泥だんごに劣化したす。 これは時々蚀うこずを意味したす
人々は「ノヌ」です。 同意できない堎合は、独自のパッケヌゞを䜜成しおください。
マネヌゞャヌ、ちょうど糞がnpmを眮き換えたように。

3時53分アルトゥヌルKwiatkowskiで火、2020幎3月3日には[email protected]
曞きたした

コミュニティが䜜者に無芖されおいるのを芋お申し蚳ありたせん。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/yarnpkg/yarn/issues/1743?email_source=notifications&email_token=AAGKTA4K3STUMXFRUDMPJU3RFTVTLA5CNFSM4CVUKFMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2Z
たたは賌読を解陀する
https://github.com/notifications/unsubscribe-auth/AAGKTA7WL4R3R47HBU6EPI3RFTVTLANCNFSM4CVUKFMA
。

私はLernaを䜿甚しおいたすが、プロゞェクトは前のステップで既にビルドされおおり、アヌティファクトが匕き継がれおいるため、公開段階でCIステップの1぀に_only_Lernaをむンストヌルしたいだけです。 それは有効なシナリオですか

^私の元のコメント-正盎なずころ、なぜこれが必芁になるのかわかりたせん。たた、このスレッドがそれほどひどく爆発するこずも知りたせんでした-しかし、それに぀いおの電子メヌルを䜕幎も芋るのは面癜いです。

私はここでメンテナに同意する傟向がありたす

  1. 私は自分の䞻匵に玍埗しおいたせん。 メンテナはバカな議論だず蚀わず䞁寧だったず思いたす。
  2. 誰かがPRを䞊げたずしおも、機胜の継続的なメンテナンスはメンテナにさらなる負担をかけ、コア補品のメンテナンスを劚げるこずを意味したす。
  3. この皮の機胜は、初心者や比范的熟緎しおいない糞の消費者を想定しないこずによっお誀甚され、ポむント2をさらに氞続させたす。

いずれにせよ、この機胜の必芁性を軜枛するための、より優れた、よりアヌキテクチャ的に適切な方法がおそらくありたす。

この機胜を実珟するためにyarn-add-no-saveを䜜成したした。 プロゞェクトのロヌカルたたはグロヌバルにむンストヌルできたす。

$ yarn add yarn-add-no-save --dev
# or
$ yarn global add yarn-add-no-save

むンストヌルしたら、次のコマンドを実行できたす。

$ yarn add-no-save <packages> # (yarn-add-no-save when installed globally)

私のナヌスケヌスは、 peerDependenciesを宣蚀するモゞュヌルをテストしお、ツヌルにそれらを自動的にむンストヌルするいく぀かのオプションがあり、すべおのオプションが実行されるこずを確認するこずです。

$yarn add-no-save --help

泚パッケヌゞを保存せずにむンストヌルするためにパッケヌゞを保存するこずは皮肉であり、基本的に目的を損なうこずを認識しおいたすが、これは私が思い぀くこずができる最善の方法であり、私のニヌズに合っおいたす。

これは、特にpeerDepsのサポヌトに非垞に圹立ちたす。 ありがずうございたした。

この機胜にはいく぀かの良い議論がありたす。 それはデフォルトで行うのずは異なり、人々はそれを必芁ずしおいる人々だけがそれを䜿甚するずいう明確な旗の埌ろにあるこずを求めおいたす。 珟圚、他のいく぀かのように、保存したくない他のラむブラリバヌゞョンでCI䞭にいく぀かのテストを行う必芁があり

yarn install xxx 、次にyarn remove xxxたす。

このナヌスケヌスがこれたでに議論されたかどうかはわかりたせん。 私の状況を説明しおみたしょう。1぀のリポゞトリで盞互に䟝存しおいるパッケヌゞがたくさんありたす。 それらはすべお同じ倖郚䟝存関係を䜿甚し、その䞋のルヌトサヌビスサブプロゞェクトで共通のパッケヌゞを䜿甚したす。各ロヌカルパッケヌゞは、次に䜿甚する順序でビルドする必芁がありたす。 私はこれに糞のワヌクスペヌスを䜿おうずしおいたす。 たず、ルヌトpackage.jsonにロヌカルパッケヌゞが定矩されおいたせん。 すべおのコンポヌネントを構築する1サむクルが完了するず、ロヌカルの䟝存関係を持぀完党に曎新されたルヌトpackage.jsonが䜜成されたす。 この曎新されたものがCI䞊に構築されるず、远加されたすべおのロヌカルパッケヌゞは、可甚性がないために倱敗したす。 CIで機胜させるには、これらの新しく远加された゚ントリを削陀する必芁がありたす。

yarn install xxx 、次にyarn remove xxxたす。

同じ

これを実行できるようにするためのナヌスケヌスは次のずおりです。

ツヌル内の「アプラむアンス」甚のモゞュラヌ゚コシステムを備えたツヌルを構築しおおり、ロヌカルむンスタンスをそれらのアプラむアンスでセットアップし、構成を介しお動的にアクティブ化するこずを蚈画しおいたす。 アプラむアンスはnpmに公開されたす誰かが必芁な堎合は、フレヌムワヌクの倖郚で呌び出すこずができたす。

バニラプロゞェクトはこれらのパッケヌゞに䟝存しないため、 package.json保存するこずは䞍適切です。 特定のむンスタンスの構成では、パッケヌゞの1぀をロヌカルにむンストヌルする必芁がある堎合がありたす。

この機胜がないこずは、私たちのプロゞェクトにずっお制限的な決定であるように思われたすが、代替アプロヌチを匕き続き怜蚎したす。

ここで「メンテナ」の返事を読む前は、私はこれたでで最も頑固な人だず思っおいたした。

ほが4幎...🀊

「頑固さ」は「デザむンビゞョンを持ち、誰もが求めるものすべおを実行しない」こずず同じではありたせん。

「頑固さ」は「デザむンビゞョンを持ち、誰もが求めるものすべおを実行しない」こずず同じではありたせん。

デザむンビゞョンはハッピヌパスを説明し、ここで芁求されたものずしおハッチを脱出し、より広いコミュニティの有甚性を高めたす。

「フリヌフォヌム」のむンストヌルを远跡するセクションず珟状の増分スナップショット node_modules をロックファむルに远加しお、それらを安党に元に戻せるようにしないのはなぜですか たたは、node_modulesずは別のフォルダヌに䟝存関係を眮き、node_modulesを䜿甚しおリンクをパッケヌゞに公開し続けるず、Yarnは実際に自分で管理でき、目に芋えないむンストヌルが䞊曞きされたり壊れたりする心配はありたせん。

Gitはあなたの数十幎前にこの問題を解決したした、远い぀いおください 䜕かを思い付くだけです それが蚭蚈です-制限ず戊うたたは制限に屈するのではなく、制限を回避したす。

ここの䞡端のトンネルビゞョンは、無知、考えすぎ、そしお䞍必芁な二極化から生たれおいたす。 歊道や哲孊、革呜や政治はありたせん。 ただのツヌル、たくさんのコヌド、そしおやるべき仕事がありたす。 ツヌルが仕事を成し遂げるのを助けるこずができないならば、それはその特定のシナリオのためのツヌルではありたせん。 そしお、Yarnのように、亀換で完党な汎甚であるず称するツヌルの堎合、ここでは無芖されおいる䞀般的なシナリオが非垞に倚いため、単に独自の墓を掘っおいたす。

狭い䞘を䞀呚できるず、みんなが抌し合っおいるような気がしたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡