【发布时间】:2016-04-16 12:11:09
【问题描述】:
我可以从package.json 得到一个值:
LAST_VERSION := $(shell node -p "require('./package.json').version")
但是如果我需要多个值怎么办?喜欢:
PROJECT := $(shell node -p "require('./package.json').name")
LAST_VERSION:= $(shell node -p "require('./package.json').version")
DESCRIPTION := $(shell node -p "require('./package.json').description")
PROJECT_URL := $(shell node -p "require('./package.json').repository.url")
这是唯一的方法吗?也许有一种方法可以创建一种列表。
【问题讨论】:
-
node调用需要多长时间?是否值得进行微优化?照原样,它看起来很可读——我不会为了混淆优化的makehackery 而牺牲这个属性。 -
@Jens 确实,它根本不影响性能,也许就这样吧。
-
如果单个
node调用可以打印所有四个项目,那么您将遇到分离它们的问题。由于make本质上使用空格分隔的列表,我预计“描述”成员会出现问题,因为描述可能包含空格。您必须使用特殊的分隔符(逗号?分号?)来创建输出,其中包含所有转义问题。 -
只要 json 文件是本地的,听从 Jens 的建议
-
@Jens 和 Alex,谢谢你们。我想这是最好的(唯一的)方法。