web-dev-qa-db-ja.com

React Redux(create-react-app)のpackage.jsonからバージョン番号を取得します

OP EDIT:他の誰かがこれに遭遇した場合:アプリは create-react-app を使用して作成され、srcフォルダー内へのインポートを制限します。ただし react-scriptsをv1.0.11にアップグレードする の場合、package.jsonにアクセスできます。

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

私はすでに これらの提案 を試しましたが、srcフォルダーの外部からpackage.jsonにアクセスできないため、それらのいずれも機能していません(Reactのせいかもしれませんが、これは初めてです)。 package.jsonをsrcに移動すると、npm installnpm version minor、およびnpm run buildをルートフォルダーから実行できなくなります。 process.env.npm_package_versionを使用しようとしましたが、未定義になります。

私はジェンキンスを使用していますが、まだコミットをプッシュするように設定していませんが、私が持っている唯一のアイデアはGitLabのタグからバージョンを取得することですが、それを行う方法がわかりませんリポジトリに不要な依存関係が追加されるため、代替手段を見つけたいと思います。

編集:私のファイル構造は次のようなものです:

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

したがって、Root.jsからpackage.jsonにアクセスするには、import packageJson from './../../package.json'を実行する必要があり、次のエラーが発生します。

./src/components/Root.js

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

26
Baldeep

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

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を追加すると、他の人やこれを見たときの自分自身の魔法を減らすのに役立ちます。さらに、テキストエディターがそれらを区別するのに役立ちます。後で感謝します。必ず./package.alias.jsonではなく./package.jsonからインポートするようにJSコードを更新してください。

次の質問もご覧ください。 create-react-appは、srcディレクトリの外部に制限をインポートします

14
kenfire

インポートせずにこれを解決し、package.jsoncreate-react-appに公開します

要件: バージョン1.1.0 + create-react-app

.env

REACT_APP_VERSION=$npm_package_version
REACT_APP_NAME=$npm_package_name

index.js

console.log(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`)

注:バージョン(および他の多くの npm config params )はアクセスされる

50
talves

これを試して。

// in package.json
"version": "1.0.0"

// in index.js
import packageJson from '../package.json';
console.log(packageJson.version); // "1.0.0"
30