所以我有一个npm脚本,我启动一个服务器,需要构建到我的项目目录。该目录有一个子目录,该子目录与package.json中定义的应用版本匹配。
{
name: “my-app”,
version: “0.3.2”
…
scripts: {
“server”: “npm-watch build:local & serve -C -l 5000 build/*”
}
}
所以我需要用版本的值来代替星号
我认为写另一个起始文件并读取package.json中的版本会更容易
我写了一个start.sh来解决这个问题。
folder structure
- my-project
|- build
|- 0.0.1
|- 0.1.0
|- 0.1.1
|- index.js
|-start.sh
|-package.json
我start.sh
#!/bin/bash
export p="./build/$(ls ./build | sort -r | head -n 1)"
node $p
我的解决方案很简单,列出。/build下的所有目录,然后反向排序。现在0.1.1是最大的版本,它将首先列出。head -n 1
表示获取当前最大版本号的第一行。
然后使用dir作为节点的执行路径。
package.json
"scripts": {
"test": "bash start.sh"
}
我认为这是类似的方式,更改为您自己的命令。
注意我已经尝试将脚本内容放在包内。但是NPM运行不能很好地解释shell变量。所以我建议编写一个独立的脚本。