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

Javascript 从package.json获取版本的好方法,javascript,npm,npm-scripts,Javascript,Npm,Npm Scripts,我正在开发一个sdk,可以在npm上使用 sdk应该能够向客户端交付其版本。我希望此版本与package.json版本相同 但是当我在sdk中从“../package.json”导入{version}时,我看到所有package.json都添加到了构建中 是否有一种获取版本的好方法,或者我将被迫在sdk中使用类似于npm version上的bash脚本的东西来设置版本变量?或者您将如何做到这一点?如果您使用nodejs,我认为您可以将您的环境和应用程序版本保存在一个独立的环境文件中。例如,我将我

我正在开发一个sdk,可以在npm上使用

sdk应该能够向客户端交付其版本。我希望此版本与package.json版本相同

但是当我在sdk中从“../package.json”导入{version}时,我看到所有package.json都添加到了构建中


是否有一种获取版本的好方法,或者我将被迫在sdk中使用类似于
npm version
上的bash脚本的东西来设置版本变量?或者您将如何做到这一点?

如果您使用nodejs,我认为您可以将您的环境和应用程序版本保存在一个独立的环境文件中。例如,我将我的设置保存在一个名为.env的文件中,并使用一个名为

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

//build.js
常量版本=“@VERSION@”
如您所见,占位符文本字符串为
@VERSION@

然后,您可以按如下方式安装并使用在中调用的包:

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

    npm安装替换--保存开发
    
  • 然后将以下内容添加到
    包.json的
    脚本
    部分:

    {
    ...
    “版本”:“1.0.0”,
    “脚本”:{
    “添加版本”:“replace-s\”@version@“$npm\u package\u version build/build.js”,
    “仅预发布”:“npm运行添加版本”
    }
    }
    
  • 跑步:

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

    $npm发布
    
    将调用
    prepublishOny
    脚本(即a),该脚本将依次调用
    addversion
    脚本

    addversion
    脚本将在名为
    build.js
    的文件中将
    @version@
    的实例替换为包版本(即
    1.0.0
    )。此解决方案将npm包版本硬编码到结果文件中


    跨平台

    addversion
    脚本(以上)中的to字符串当前使用
    $
    前缀(即
    $npm\u package\u version
    )来访问变量,因此这只能在bash shell上成功运行

    但是,对于跨平台使用,您需要使用

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

    npm安装交叉变量--save dev
    
  • 然后重新定义
    addversion
    脚本,如下所示:

    {
    ...
    “版本”:“1.0.0”,
    “脚本”:{
    “添加版本”:“交叉变量替换-s\”@version@\“$npm\U包\u版本构建/build.js”,
    “仅预发布”:“npm运行添加版本”
    }
    }
    

  • 很遗憾,我没有使用node。它只是一个基本的js对象,里面有一些函数,就是这样做的!而且它在持续集成中应该运行得很好。看来我没有足够的声誉来支持评论。。。如果你介意的话,你可以写一个我可以投赞成票的答案:)