docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs(scripts): update npm_package_* environment variables documentation - #8821

Merged
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean
Dec 4, 2025
Merged

docs(scripts): update npm_package_* environment variables documentation#8821
owlstronaut merged 1 commit into
npm:latestfrom
MaxBlack-dev:docs/2452-update-npm-package-vars-clean

Conversation

@MaxBlack-dev

Copy link
Copy Markdown
Contributor

Description

This PR updates the npm_package_* environment variables documentation to reflect the changes made in npm 7.

Changes

  • Listed the specific environment variables that npm still provides in npm 7+
  • Added note explaining that most package.json fields are no longer provided as environment variables
  • Documented that npm_package_json provides the path to package.json for scripts that need to read other fields

Context

In npm 7, the behavior changed from providing all package.json fields as environment variables to only providing a specific subset. This was documented in RFC 21. The old documentation was misleading as it suggested all fields were still available.

Fixes

Fixes#2452

@MaxBlack-dev
MaxBlack-dev requested a review from a team as a code ownerDecember 3, 2025 21:04

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you open to documenting the install-specific envars that aren't currently documented anywhere?

npm_package_resolved: resolved,
npm_package_integrity: integrity,
npm_package_json: resolve(path,'package.json'),
npm_package_optional: boolEnv(optional),
npm_package_dev: boolEnv(dev),
npm_package_peer: boolEnv(peer),
npm_package_dev_optional:

Also, i don't think main is actually included. I'm not sure if that was missed last time this was updated or why, but it isn't here and in my local tests I'm not seeing a value.

@MaxBlack-dev
MaxBlack-devforce-pushed the docs/2452-update-npm-package-vars-clean branch from 2329a66 to 09455b7CompareDecember 4, 2025 19:23
@MaxBlack-dev

Copy link
Copy Markdown
ContributorAuthor

Thank you for the review! I've updated the documentation based on your feedback:

Changes Made

  1. Removed npm_package_main - You're correct, this is not actually provided. I verified this in the source code at node_modules/@npmcli/run-script/lib/package-envs.js which only exports name, version, config, engines, and bin.

  2. Added install-specific environment variables - Documented the additional variables that are set during install scripts (preinstall, install, postinstall):

    • npm_package_resolved - The resolved URL for the package
    • npm_package_integrity - The integrity hash for the package
    • npm_package_optional - Set to "true" if the package is optional
    • npm_package_dev - Set to "true" if the package is a dev dependency
    • npm_package_peer - Set to "true" if the package is a peer dependency
    • npm_package_dev_optional - Set to "true" if the package is both dev and optional

These are sourced from workspaces/arborist/lib/arborist/rebuild.js lines 310-316 as you referenced.

The updated documentation now accurately reflects what environment variables are actually available to scripts.

@owlstronautowlstronaut left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thank you!

@owlstronaut
owlstronaut merged commit 33a50d7 into npm:latestDec 4, 2025
8 checks passed
@github-actionsgithub-actionsBot mentioned this pull request Dec 3, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Broken link in npm v7 series beta re. $npm_package_* environment variables (now gone)

2 participants

@MaxBlack-dev@owlstronaut