添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

首先说一下package.json的 script 中的几个钩子

scripts: 声明一系列npm脚本指令

  1. prepublish: 在包发布之前运行,也会在npm install安装到本地时运行
  2. publish,postpublish: 包被发布之后运行
  3. preinstall: 包被安装前运行
  4. install,postinstall: 包被安装后运行
  5. preuninstall,uninstall: 包被卸载前运行
  6. postuninstall: 包被卸载后运行
  7. preversion: bump包版本前运行
  8. postversion: bump包版本后运行
  9. pretest,test,posttest: 通过npm test命令运行
  10. prestop,stop,poststop: 通过npm stop命令运行
  11. prestart,start,poststart: 通过npm start命令运行
  12. prerestart,restart,postrestart: 通过npm restart运行
// 举个例子
"scripts":{
	"prestart":"prebuild.bat",
	"start":"webpack .",
	"poststart":"postbuild.bat"

以 start 命令为例,我们的命令都是key value 形式存放的,一般使用npm start命令时执行的是webpack .,如果我们加上代码中的两行,那么执行npm start时,流程是这样的:

  • 先执行 prestart指令,此时会对应的执行prebuild.bat文件
  • 然后执行 start 指令,此时会执行webpack .命令
  • 最后执行 poststart指令,此时会执行postbuild.bat文件

pre 意味着,在某个命令之前执行,post 则是之后,对应的可以参考我上面的钩子指令。

获取package.json中的版本号–bat脚本

文件名:prebuild.bat (自己随便取,我这里主要是为了和后面对应)。

文件路径:这个文件要和 package.json同级。

@echo off
REM 获取版本号
for /f "tokens=1,2* delims=," %%a in (package.json) do (
    echo %%a | findstr "version" >nul && echo {%%a} > "src/assets/config/version.json" || echo;
 

首先说明一下:我也不会使用bat指令,这些bat指令,是我从网上查资料,然后自己改造,最后写成的。

这几行bat指令,会读取你的package.json文件,取出 version 这一行,然后写入到路径为src/assets/config/version.jsonversion.json文件里。

如果路径下不存在version.json这个文件的话,会自动创建此文件然后在写入。

打开package.json找到我们 打包 或 其他指令(这里以build打包指令为例):

"build":"xxxxxx"

此时我们需要在package.jsonscripts里,也就是 build 命令所在的地方,加一行:

"prebuild":"prebuild.bat"

这样,每次我们执行npm run build的时候,程序都会先走 prebuild钩子,对应的去执行 prebuild.bat文件,然后bat文件会读取出package.json里的version版本,并放入我们指定的version.json文件里。

  • 注意:这里每次写入version.json,都是覆盖写入,不是追加。

如果我们需要拿版本号的话,只需要读取我们创建的json文件即可。

本文的起因是有在代码仓库发包后,同事问我“为什么package.json 里的版本还是原来的,有没有更新?”,这个时候我意识到,我们完全没有必要在每次发布的时候还特意去关注这个仓库的版本号,只要在发布打tag的时候同步一下即可,于是有了本文的实践。node.js 部分,我们得有一个更改仓库代码的脚本留给ci执行我们首先需要在工程目录的./script/..目录下增加一个update-vers... 我们在搭建项目的时候,通过 npm 安装的依赖模块时,package.json文件依赖的版本号前面会带符号 ^,有时候我们看别人的项目时也可能会看版本前带符号 ~ ,或者什么也不带,其会有什么区别呢?而且当你的 npm 版本升级到 5.X.X 版本以上的时候,对应目录下还是自动生成一个 package-lock.json 文件,这个文件的作用又是什么呢。博主根据网上资料简单说明一下。 1.package.json 版本 dependencies: { react: ^16.8.0 react: ~16.8.0, react: 16. ~和^的区别 最近总是碰到一些问题, 在本地好好的, 在线上就出现了问题, 本地也一直复现不了, 后来把node_modules目录删除了之后, 重新安装, 就在本地复现了这个问题,可以看了git history, 并没有人修改package.json版本号,于是认真的了解了一下package.json库的版本号; ~和^的区别 babel-loader: ^7.1.1, body-parser: ~1.15.2 npm install –save xxx, 会优先考虑使用 ^而不是~ 以版本号x.y.z为例 x:主版本号, 当你做了不兼容的API修改 y:次版本 Config File Provider Plugin不允许您将参数传递给配置文件.您可以使用任何脚本语言解决您的问题.我最喜欢的方法是使用Groovy plugin.点击一个复选框“执行系统Groovy脚本”并粘贴以下脚本:import groovy.json.*// read build parametersenv = build.getEnvironment(listener)environ... //1首先导入JSON 依赖 import groovy.json.JsonSlurper //使用def 定义自己的函数 getAppVersionCode 获取JSON文件当前的版本号 def getAppVersionCode() { //默认版本如果没有读取到就使用默认 int vvCode... 读取文件夹所有文件名 参考的是网上txt转bat文件运行方式: 在需要读取文件夹所有文件名的文件夹下,新建txt2bat.txt文件,写入dir>filename.txt 将txt2bat.txt文件后缀转换为.bat,双击运行,即可获得一个filename.txt文件,该文件夹所有文件名,格式一般为:创建时间 文件大小 文件名称(含后缀) 读取json数据保存至txt文件 因为我的数据可能需要保密,这里大致展示一下json文件结构: {"Id":x 1、直接 import,例如 import config from "../../../package.json"; 2、在函数调用,例如 console.log(config.version); import java.io.IOException;import java.io.StringReader;import java.io.StringWriter;import java.util.Iterator;import javax.xml.transform.OutputKeys;import javax.xml.transform.Source;impor 1 数据可视化接口 1.1 设计思路 之前把轻度聚合的结果都保存到了ClickHouse,主要目的就是提供即时的数据查询、统计、分析服务。这些统计服务一般会用两种形式展示,一种是为专业的数据分析人员的BI工具,另一种是为非专业人员提供更加直观的数据大屏。 ​ 下面主要是面向百度的sugar的数据大屏服务的接口开发。 1.2 需求梳理 1.2.1 最终效果 1.2.2 分析可视化大屏