diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b79f775d350dd..6cbf5d3a40ee9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,9 @@ jobs: # Run the installer script - name: Install dependencies - run: node . install + run: | + node . install --ignore-scripts --no-audit + node . rebuild # Run the tests, but not if we're just gonna do coveralls later anyway - name: Run Tap tests diff --git a/Makefile b/Makefile index 76880dd220faf..83046c59aca9b 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ SHELL = bash PUBLISHTAG = $(shell node scripts/publish-tag.js) BRANCH = $(shell git rev-parse --abbrev-ref HEAD) -markdowns = $(shell find docs -name '*.md' | grep -v 'index') README.md +markdowns = $(shell find docs -name '*.md' | grep -v 'index') # these docs have the @VERSION@ tag in them, so they have to be rebuilt # whenever the package.json is touched, in case the version changed. @@ -14,8 +14,7 @@ version_mandocs = $(shell grep -rl '@VERSION@' docs/content \ cli_mandocs = $(shell find docs/content/commands -name '*.md' \ |sed 's|.md|.1|g' \ - |sed 's|docs/content/commands/|man/man1/|g' ) \ - man/man1/npm-README.1 + |sed 's|docs/content/commands/|man/man1/|g' ) files_mandocs = $(shell find docs/content/configuring-npm -name '*.md' \ |sed 's|.md|.5|g' \ @@ -29,63 +28,29 @@ mandocs = $(cli_mandocs) $(files_mandocs) $(misc_mandocs) all: docs -latest: - @echo "Installing latest published npm" - @echo "Use 'make install' or 'make link' to install the code" - @echo "in this folder that you're looking at right now." - node bin/npm-cli.js install -g -f npm ${NPMOPTS} - -install: all - node bin/npm-cli.js install -g -f ${NPMOPTS} $(shell node bin/npm-cli.js pack | tail -1) - -# backwards compat -dev: install - -link: uninstall - node bin/npm-cli.js link -f - -clean: markedclean marked-manclean docs-clean - rm -rf npmrc - node bin/npm-cli.js cache clean --force - -uninstall: - node bin/npm-cli.js rm npm -g -f +docs: mandocs htmldocs -mandocs: $(mandocs) +mandocs: dev-deps $(mandocs) $(version_mandocs): package.json -htmldocs: +htmldocs: dev-deps + node bin/npm-cli.js rebuild cd docs && node dockhand.js >&2 -docs: mandocs htmldocs - -markedclean: - rm -rf node_modules/marked node_modules/.bin/marked .building_marked - -marked-manclean: - rm -rf node_modules/marked-man node_modules/.bin/marked-man .building_marked-man +clean: docs-clean gitclean docsclean: docs-clean + docs-clean: - rm -rf \ - .building_marked \ - .building_marked-man \ - man \ - docs/node_modules \ - docs/output \ - docs/.cache - -## build-time tools for the documentation -build-doc-tools := node_modules/.bin/marked \ - node_modules/.bin/marked-man - -# use `npm install marked-man` for this to work. -man/man1/npm-README.1: README.md scripts/docs-build.js $(build-doc-tools) - @[ -d man/man1 ] || mkdir -p man/man1 - node scripts/docs-build.js $< $@ + rm -rf man -man/man1/%.1: docs/content/commands/%.md scripts/docs-build.js $(build-doc-tools) +## build-time dependencies for the documentation +dev-deps: + node bin/npm-cli.js install --only=dev --no-audit --ignore-scripts + +## targets for man files, these are encouraged to be only built by running `make docs` or `make mandocs` +man/man1/%.1: docs/content/commands/%.md scripts/docs-build.js @[ -d man/man1 ] || mkdir -p man/man1 node scripts/docs-build.js $< $@ @@ -95,47 +60,41 @@ man/man5/npm-json.5: man/man5/package.json.5 man/man5/npm-global.5: man/man5/folders.5 cp $< $@ -man/man5/%.5: docs/content/configuring-npm/%.md scripts/docs-build.js $(build-doc-tools) +man/man5/%.5: docs/content/configuring-npm/%.md scripts/docs-build.js @[ -d man/man5 ] || mkdir -p man/man5 node scripts/docs-build.js $< $@ -man/man7/%.7: docs/content/using-npm/%.md scripts/docs-build.js $(build-doc-tools) +man/man7/%.7: docs/content/using-npm/%.md scripts/docs-build.js @[ -d man/man7 ] || mkdir -p man/man7 node scripts/docs-build.js $< $@ -marked: node_modules/.bin/marked - -node_modules/.bin/marked: - node bin/npm-cli.js install marked --no-global --no-timing --no-save - -marked-man: node_modules/.bin/marked-man - -node_modules/.bin/marked-man: - node bin/npm-cli.js install marked-man --no-global --no-timing --no-save - -test: docs +test: dev-deps node bin/npm-cli.js test -tag: - node bin/npm-cli.js tag npm@$(PUBLISHTAG) latest - ls-ok: - node . ls >/dev/null + node . ls --production >/dev/null gitclean: git clean -fd -publish: gitclean ls-ok link docs-clean docs +uninstall: + node bin/npm-cli.js rm -g -f npm + +link: uninstall + node bin/npm-cli.js link -f --ignore-scripts + +prune: + node bin/npm-cli.js prune --production --no-save --no-audit + @[[ "$(shell git status -s)" != "" ]] && echo "ERR: found unpruned files" && exit 1 || echo "git status is clean" + + +publish: gitclean ls-ok link test docs-clean docs prune @git push origin :v$(shell node bin/npm-cli.js --no-timing -v) 2>&1 || true git push origin $(BRANCH) &&\ git push origin --tags &&\ node bin/npm-cli.js publish --tag=$(PUBLISHTAG) -release: gitclean ls-ok markedclean marked-manclean docs-clean docs - node bin/npm-cli.js prune --production --no-save +release: gitclean ls-ok docs-clean docs prune @bash scripts/release.sh -sandwich: - @[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13) - -.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok realclean +.PHONY: all latest install dev link docs clean uninstall test man docs-clean docsclean release ls-ok dev-deps prune