@@ -82,6 +82,7 @@ NODE_EXE = node$(EXEEXT)
82
82
NODE ?= "$(PWD ) /$(NODE_EXE ) "
83
83
NODE_G_EXE = node_g$(EXEEXT )
84
84
NPM ?= ./deps/npm/bin/npm-cli.js
85
+ NPX ?= ./deps/npm/bin/npx-cli.js
85
86
86
87
# Flags for packaging.
87
88
BUILD_DOWNLOAD_FLAGS ?= --download=all
@@ -333,7 +334,6 @@ coverage-run-js: ## Run JavaScript tests with coverage.
333
334
# This does not run tests of third-party libraries inside deps.
334
335
test : all # # Run default tests, linters, and build docs.
335
336
$(MAKE ) -s tooltest
336
- $(MAKE ) -s test-doc
337
337
$(MAKE ) -s build-addons
338
338
$(MAKE ) -s build-js-native-api-tests
339
339
$(MAKE ) -s build-node-api-tests
@@ -369,7 +369,7 @@ test-valgrind: all ## Run tests using valgrind.
369
369
test-check-deopts : all
370
370
$(PYTHON ) tools/test.py $(PARALLEL_ARGS ) --mode=$(BUILDTYPE_LOWER ) --check-deopts parallel sequential
371
371
372
- DOCBUILDSTAMP_PREREQS = tools/doc/addon-verify.mjs doc/api/addons.md
372
+ DOCBUILDSTAMP_PREREQS = doc/api/addons.md
373
373
374
374
ifeq ($(OSTYPE ) ,aix)
375
375
DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS ) out/$(BUILDTYPE ) /node.exp
@@ -385,7 +385,7 @@ test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/node_modules
385
385
echo " Skipping .docbuildstamp (no crypto and/or no ICU)" ; \
386
386
else \
387
387
$(RM ) -r test/addons/?? _* /; \
388
- [ -x $( NODE ) ] && $( NODE ) $< || node $< ; \
388
+ $( call available-node, $(NPX ) --prefix tools/doc api-docs-tooling -t addon-verify -i doc/api/addons.md -o test/addons/ --lint-dry-run) \
389
389
[ $$ ? -eq 0 ] && touch $@ ; \
390
390
fi
391
391
@@ -779,14 +779,10 @@ test-v8 test-v8-intl test-v8-benchmarks test-v8-all:
779
779
$(warning Use the git repo instead: $$ git clone https://github.com/nodejs/node.git)
780
780
endif
781
781
782
- apidoc_dirs = out/doc out/doc/api out/doc/api/assets
782
+ apidoc_dirs = out/doc out/doc/api
783
783
skip_apidoc_files = doc/api/quic.md
784
784
785
- apidoc_sources = $(filter-out $(skip_apidoc_files ) , $(wildcard doc/api/* .md) )
786
- apidocs_html = $(addprefix out/,$(apidoc_sources:.md=.html ) )
787
- apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json ) )
788
-
789
- apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/* ) ) )
785
+ run-npm-ci = $(PWD ) /$(NPM ) ci
790
786
791
787
tools/doc/node_modules : tools/doc/package.json
792
788
@if [ " $( shell $( node_use_openssl_and_icu) ) " != " true" ]; then \
@@ -797,11 +793,11 @@ tools/doc/node_modules: tools/doc/package.json
797
793
798
794
.PHONY : doc-only
799
795
doc-only : tools/doc/node_modules \
800
- $(apidoc_dirs ) $( apiassets ) # # Build the docs with the local or the global Node.js binary.
796
+ $(apidoc_dirs ) # # Builds the docs with the local or the global Node.js binary.
801
797
@if [ " $( shell $( node_use_openssl_and_icu) ) " != " true" ]; then \
802
- echo " Skipping doc-only (no crypto and/ or no ICU )" ; \
798
+ echo " Skipping doc-only (no crypto or no icu )" ; \
803
799
else \
804
- $(MAKE ) out /doc/ api/all. html out/ doc/api/all.json out/doc/api/stability ; \
800
+ $(call available-node, $( NPX ) --prefix tools /doc api-docs-tooling -t legacy- html-all legacy-json-all api-links -i doc/api/\ * .md -i lib/\ * .js --ignore $( skip_apidoc_files ) -o out/doc/api/ --lint-dry-run -c file:// $( PWD ) /CHANGELOG.md) \
805
801
fi
806
802
807
803
.PHONY : doc
@@ -817,79 +813,24 @@ out/doc/api: doc/api
817
813
mkdir -p $@
818
814
cp -r doc/api out/doc
819
815
820
- # If it's a source tarball, assets are already in doc/api/assets
821
- out/doc/api/assets :
822
- mkdir -p $@
823
- if [ -d doc/api/assets ]; then cp -r doc/api/assets out/doc/api; fi ;
824
-
825
- # If it's not a source tarball, we need to copy assets from doc/api_assets
826
- out/doc/api/assets/% : doc/api_assets/% | out/doc/api/assets
827
- @cp $< $@ ; $(RM ) out/doc/api/assets/README.md
828
-
829
-
830
- run-npm-ci = $(PWD ) /$(NPM ) ci
831
-
832
- LINK_DATA = out/doc/apilinks.json
833
- VERSIONS_DATA = out/previous-doc-versions.json
834
- gen-api = tools/doc/generate.mjs --node-version=$(FULLVERSION ) \
835
- --apilinks=$(LINK_DATA ) $< --output-directory=out/doc/api \
836
- --versions-file=$(VERSIONS_DATA )
837
- gen-apilink = tools/doc/apilinks.mjs $(LINK_DATA ) $(wildcard lib/* .js)
838
-
839
- $(LINK_DATA ) : $(wildcard lib/* .js) tools/doc/apilinks.mjs | out/doc
840
- $(call available-node, $(gen-apilink ) )
841
-
842
- # Regenerate previous versions data if the current version changes
843
- $(VERSIONS_DATA ) : CHANGELOG.md src/node_version.h tools/doc/versions.mjs
844
- $(call available-node, tools/doc/versions.mjs $@ )
845
-
846
- node_use_icu = $(call available-node,"-p" "typeof Intl === 'object'")
816
+ out/doc/api/% .json out/doc/api/% .html : doc-only
847
817
848
- out/doc/api/% .json out/doc/api/% .html : doc/api/% .md tools/doc/generate.mjs \
849
- tools/doc/markdown.mjs tools/doc/html.mjs tools/doc/json.mjs \
850
- tools/doc/apilinks.mjs $(VERSIONS_DATA ) | $(LINK_DATA ) out/doc/api
851
- @if [ " $( shell $( node_use_icu) ) " != " true" ]; then \
852
- echo " Skipping documentation generation (no ICU)" ; \
853
- else \
854
- $(call available-node, $(gen-api ) ) \
855
- fi
818
+ out/doc/api/all.html : doc-only
856
819
857
- out/doc/api/all.html : $(apidocs_html ) tools/doc/allhtml.mjs \
858
- tools/doc/apilinks.mjs | out/doc/api
859
- @if [ " $( shell $( node_use_icu) ) " != " true" ]; then \
860
- echo " Skipping HTML single-page doc generation (no ICU)" ; \
861
- else \
862
- $(call available-node, tools/doc/allhtml.mjs) \
863
- fi
864
-
865
- out/doc/api/all.json : $(apidocs_json ) tools/doc/alljson.mjs | out/doc/api
866
- @if [ " $( shell $( node_use_icu) ) " != " true" ]; then \
867
- echo " Skipping JSON single-file generation (no ICU)" ; \
868
- else \
869
- $(call available-node, tools/doc/alljson.mjs) \
870
- fi
871
-
872
- .PHONY : out/doc/api/stability
873
- out/doc/api/stability : out/doc/api/all.json tools/doc/stability.mjs | out/doc/api
874
- @if [ " $( shell $( node_use_icu) ) " != " true" ]; then \
875
- echo " Skipping stability indicator generation (no ICU)" ; \
876
- else \
877
- $(call available-node, tools/doc/stability.mjs) \
878
- fi
820
+ out/doc/api/all.json : doc-only
879
821
880
822
.PHONY : docopen
881
- docopen : out/ doc/api/all.html # # Open the documentation in a web browser.
823
+ docopen : doc-only # # Open the documentation in a web browser.
882
824
@$(PYTHON ) -mwebbrowser file://$(abspath $< )
883
825
884
826
.PHONY : docserve
885
- docserve : $( apidocs_html ) $( apiassets ) # # Serve the documentation on localhost:8000.
827
+ docserve : doc-only # # Serve the documentation on localhost:8000.
886
828
@$(PYTHON ) -m http.server 8000 --bind 127.0.0.1 --directory out/doc/api
887
829
888
830
.PHONY : docclean
889
831
.NOTPARALLEL : docclean
890
832
docclean : # # Remove the generated documentation.
891
833
$(RM ) -r out/doc
892
- $(RM ) " $( VERSIONS_DATA) "
893
834
894
835
RAWVER =$(shell $(PYTHON ) tools/getnodeversion.py)
895
836
VERSION =v$(RAWVER )
@@ -1396,7 +1337,12 @@ tools/.mdlintstamp: tools/lint-md/node_modules/remark-parse/package.json $(LINT_
1396
1337
@touch $@
1397
1338
1398
1339
.PHONY : lint-md
1399
- lint-md : lint-js-doc | tools/.mdlintstamp # # Lint the markdown documents maintained by us in the codebase.
1340
+ lint-md : lint-js-doc lint-docs | tools/.mdlintstamp # # Lint the markdown documents maintained by us in the codebase.
1341
+
1342
+ .PHONY : lint-docs
1343
+ lint-docs : tools/doc/node_modules
1344
+ $(info Running API Doc linter...)
1345
+ $(call available-node, $(NPX ) --prefix tools/doc api-docs-tooling -i doc/api/* .md -r github)
1400
1346
1401
1347
run-format-md = tools/lint-md/lint-md.mjs --format $(LINT_MD_FILES )
1402
1348
.PHONY : format-md
0 commit comments