1. ホーム
  2. node.js

[解決済み] React Reduxでpackage.jsonからバージョン番号を取得する(create-react-app)

2022-08-22 07:40:36

質問

OP EDIT: もし誰かがこれに出くわしたら: このアプリは create-react-app を使用して作成されたもので、インポートは src フォルダ内に制限されます。しかし、もし react-scriptsをv1.0.11にアップグレードしてください。 とすると、package.jsonにアクセスできるようになります。

アプリでpackage.jsonからバージョン番号を取得しようとしています。

すでに試したところ これらの提案 を試しましたが、src フォルダの外から package.json にアクセスできないため、どれもうまくいきませんでした (React のせいかもしれません。私はこれを初めて知りました)。package.jsonをsrcに移動すると、私は以下を実行できないことを意味します。 npm install , npm version minor そして npm run build をルートフォルダから削除しました。私は process.env.npm_package_version を使ってみましたが、結果は未定義です。

Jenkinsを使っていて、まだコミットをプッシュするように設定していないのですが、唯一のアイデアはGitLabのタグからバージョンを取得することですが、その方法が全くわからず、レポに不必要な依存関係を追加してしまうので、ぜひ代替案を見つけたいと思います。

EDITです。 私のファイル構造は次のようなものです。

--> RootAppFolder
    |--> build
    |--> node_modules
    |--> public
    |--> src
         |--> Components
              |--> Root.js
    |
    |--> package.json

というわけで、Root.jsからpackage.jsonにアクセスするには import packageJson from './../../package.json' と記述すると、以下のようなエラーになります。

./src/components/Root.js

モジュールが見つかりませんでした。インポートしようとしたのは ./../../package.json をインポートしようとしましたが、これはプロジェクトの src/ ディレクトリの外にあります。 ディレクトリの外側にあります。src/ ディレクトリの外への相対的なインポートはサポートされていません。以下の方法があります。 src/ 内に移動するか、プロジェクトの node_modules/ からシンボリックリンクを追加してください。

どのように解決するのですか?

あなたの編集から、私は試してみることをお勧めします。

import packageJson from '/package.json';

シンボリックリンクを作成してみるのもよいでしょう。

# From the project root.
cd src; ln -s ../package.json package.alias.json

srcディレクトリの内容をリストアップすると、シンボリックリンクが表示されます。

ls
#=> package.alias.json -> ../package.json

を追加することで .alias を追加することで、他の人や将来の自分がこれを見たときに、quot;magic" を減らすことができます。さらに、テキストエディタが両者を区別してくれるようになります。後で私に感謝することになるでしょう。ただ、JSコードを更新して ./package.alias.json の代わりに ./package.json .

また、この質問にも目を通してください。 create-react-appのインポートがsrcディレクトリの外にある場合の制限について