gpt4 book ai didi

javascript - 从 package.json 获取版本的好方法

转载 作者:行者123 更新时间:2023-12-03 02:03:57 24 4
gpt4 key购买 nike

我正在开发一个可在 npm 上使用的 sdk。

sdk 应该能够将其版本传递给客户端。我希望这个版本与 package.json 版本相同。

但是当我在我的 sdk 中导入 import {version} from '../package.json' 时,我看到所有 package.json 都已添加到构建中。

有没有一种获取版本的好方法,或者我是否会被迫使用 npm version 上的 bash 脚本之类的东西在我的 sdk 中设置版本变量?或者你会怎么做?

最佳答案

您可以通过在 JavaScript 文件中指定占位符文本字符串来实现此目的。假设我们有一个名为 build.js 的文件,在该文件中我们有一个名为 VERSION 的变量,声明如下:

// build.js
const VERSION = '@VERSION@'

如您所见,占位符文本字符串为 @VERSION@

然后您可以安装并使用名为 replace 的软件包在 npm-script如下:

  1. 要安装replace,您需要cd到您的项目目录并运行:

    npm install replace --save-dev
  2. 然后将以下内容添加到 package.jsonscripts 部分:

    {
    ...
    "version": "1.0.0",
    "scripts": {
    "add-version": "replace -s \"@VERSION@\" $npm_package_version build/build.js",
    "prepublishOnly": "npm run add-version"
    }
    }

运行:

当您通过 CLI 运行以下命令来发布包时:

$ npm publish

将调用 prepublishOny 脚本(即 pre hook ),该脚本又将调用 add-version 脚本。

add-version 脚本将用软件包版本(即 1.0.0)替换 @VERSION@ 实例,文件名为 build.js。此解决方案会将 npm 包版本硬编码到结果文件中。

<小时/>

跨平台

add-version 脚本(上面)中的 to 字符串当前使用 $ 前缀(即 $npm_package_version) 来访问变量,因此只能在 bash shell 上成功运行。

但是,对于跨平台使用,您需要使用 cross-var .

  1. 要安装 cross-var,您需要 cd 到您的项目目录并运行:

    npm install cross-var --save-dev
  2. 然后重新定义 add-version 脚本,如下所示:

    {
    ...
    "version": "1.0.0",
    "scripts": {
    "add-version": "cross-var replace -s \"@VERSION@\" $npm_package_version build/build.js",
    "prepublishOnly": "npm run add-version"
    }
    }

关于javascript - 从 package.json 获取版本的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com