私はReactコンポーネントを開発していますが、これをnpmに公開したいのですが、スタティックアセット(CSSや画像など)をコンポーネントと共に配布する方法に関するベストプラクティスは見つかりませんでした。まあ、もちろん、すべての情報源はプレーンなjsとプレーンなCSSに変換されるべきです。 jsの場合はすべてがシンプルです - ユーザーは、彼が使用しているどんなバンドラでもそれを要求するだけです。しかし、CSSの場合、それは扱いにくいです。コンポーネントを簡単にカスタマイズできるようにするために(CSSオーバーライドによって)インラインスタイルを使用したくありません。ですから、私は、node_modulesからcssファイルを必要な場所にコピーする(またはSASSや他のプリプロセッサでインポートする)ようにユーザに頼むしかないと思います。しかし、私のCSSファイルが他の静的資産(画像、フォントなど)を参照している場合はどうでしょうか?パスは完全に台無しになるでしょう。だから、私はそれを行う正しい方法は何かに興味がありますか?ユーザーが簡単に使用できるようにする方法と一般的な落とし穴を避ける方法スタティックアセットを持つReactコンポーネントをnpmに公開するには?
答えて
これは本当に良い質問です。私の答えがあなたが期待しているものであるかどうかは分かりません(技術よりも哲学的です)が、それは良い出発点だと思います。
まず、「正しい方法」はないと思います。パッケージを維持しているチーム(1人のチームになることができます)を想像してください。名前を付ける方法は、それらに意味をなさない方法であり、それは「正しい方法」です。だから、物事に名前を付けるための「標準」はなく、あなたが正しいと思うように物事を命名し、あなたは行かなくてはなりません。
今、IMHO、あなたのパッケージを使用する人は、あなたの使い方を心配する必要があります。その人はあなたのパッケージから何を使いたいのか、そして何を使いたいのか、どのように使いたいのかを選択できるからです。
たとえば、webpackを使用している場合は、url-loader
を使用することができます。これにより、URLの問題が解決されます。
webpackを使用していない場合は、パッケージに関する一貫したドキュメントとその使い方を提供することができます。ユーザーは、必要なツールを使用してこれに従います。ユーザーがgrep
とsed
をワークフローに使用したい場合は、それらの管理下にあるので問題ありません。
また、イメージを使用するスタイルを提供する場合は、プリプロセッサなどを使用して、ユーザーがいくつかの変数をカスタマイズして物のパスを設定できるようにすることもできます。たとえば、assets-path
と言うと、SASSを使用すると、ユーザーは$assets-path: '/path/to/assets/'
を追加してCSSをコンパイルするだけです。
私はパッケージを使用しているときはいつも、「大丈夫、そこにはたくさんのものがあります。私はそれらをすべて使う必要はなく、私が望むものを使用します。私はあなたのパッケージを使用し、CSSファイルがあることを知っています。私は助けてくれるツールを見つけようとします。
「標準」に従う場合は、githubで最も人気のある反応プロジェクトをチェックしてみてください。しかし、前にも述べたように、名前を付ける方法は彼らにとって意味のある方法です。それはあなたに意味をなさないかもしれません! :)
希望します!
- 1. NPMでの公開のためのReactコンポーネントのインポートモジュール
- 2. NPMにAureliaコンポーネントを公開しますか?
- 3. React - コンポーネントの機能を子に公開する
- 4. npm cssとフォントでコンポーネントを公開する
- 5. travis:バージョンバンプでnpmに公開
- 6. npmパッケージを公開する場合は、
- 7. npmリポジトリにreactコンポーネントを追加する方法は?
- 8. モデルデータをコンポーネントに公開する
- 9. jsxファイルをnpmに公開するには?
- 10. angular2モジュール/コンポーネントをnpmパッケージとして公開
- 11. TranspileネイティブモジュールをES5に公開してからnpmに公開しますか?
- 12. ジェンキンからnpmを公開する
- 13. azure、asp.net coreに公開するReact app
- 14. オープンソースのクラスを公開するには(例:NPM)?
- 15. npm publishはnpmリポジトリにのみ公開したい
- 16. 公開方法NPMスコープパッケージ/ NPMスコープが見つかりません?
- 17. React?のコンポーネントごとに列を持つHTMLテーブルをモデル化するには?
- 18. React-router v4パラメータを持つ共有コンポーネント
- 19. 複数のレイアウトを持つReactコンポーネント
- 20. 公開サーバのGit、Node.js、NPM
- 21. TFS 2017アップデート1 NPMパッケージのフィード - NPMパッケージを公開する際にUnauthorized
- 22. GitHub上の公開号トラッカーを持つ私的なリポジトリを持つには?
- 23. 異なる依存関係を持つnpmモジュールの2つのバージョンを公開する
- 24. 内部機能とプロパティを持つ公開プロトコル公開
- 25. NPM 5私のノードのライブラリを公開する前にシンボリックリンク
- 26. WebアプリケーションをNPMに公開する方法
- 27. 公開ソースに近いソースの依存関係を持つモジュールを公開することは法律です
- 28. Bowerコンポーネントを公開するベストプラクティス
- 29. Tridion IDを持つTridionマルチメディアコンポーネントを公開
- 30. CircleCIを使用してNPMにパッケージを自動的に公開
多分、production/dist webpackの設定を表示する必要があります。 – MacKentoch
@MacKentoch npmはバンドルされた/縮小されたバージョンの正しい場所ではないと思うので、これはwebpackの設定がありません。私がやっているのは、ES5へのjsxのトランスポートだけです。 – alexb