Ich bin neu in Makefiles ich ein wenig Mühe habe den Zielpfad zu unterscheiden im Vergleich zu dem, wo die Make-Datei hierangeben Ziele für Make-Datei Befehl
existiert mein ist Makefile
babel-ready:
make babel-install-preset module=es2015
make babel-install-preset module=stage-2
babel-install-preset:
npm install --save-dev babel-preset-$(module)
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'if (!this.babel) this.babel = {}' ;\
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'if (!this.babel.presets) this.babel.presets = []' ;\
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'this.babel.presets.push("'$(module)'")' ;\
Hier ist die Richt Struktur:
- node_modules
- .bin/
- json
- Makefile
- packages/
- my-package/
- package.json
- package.json
Ich möchte dieses Makefile auf drei Arten verwenden.
Eine ist, ein Ziel wie dieses anzugeben.
./ $ make babel-ready package=my-package
Zwei ist es auf dem root-Paket.json ausführen.
./ $ make babel-ready
Dritte ist im Paket zu sein und einfach den Befehl ausführen.
./packages/my-package $ make -C ../../ babel-ready
Ich möchte es, wenn alle drei den gleichen Basiscode auch verwenden könnten.
Ich halte cd
mit dem Verzeichnis innerhalb der Befehle zu ändern, aber es hält mich vermasselt, denn sobald ich cd
ich keinen Zugang mehr zu dem Befehl make, und haben make -C ${CURDIR}
zu verwenden, aber dann habe ich keinen Zugang mehr auf die richtige package.json
Datei, so scheint es, als könnte ich nichts zur Arbeit bringen.