Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd
, '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

Quiet down or silence non-errors in npm install - #77

Closed
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest
Closed

Quiet down or silence non-errors in npm install #77
wesbos wants to merge 1 commit into
npm:latestfrom
wesbos:latest

Conversation

@wesbos

Copy link
Copy Markdown
Contributor

npm install output scares people

Summary

npm install shows too much low level information which is unhelpful to most developers.

Motivation

There is no way to tell if a npm install has worked or not. Many of my students are confused at the output as it looks like something has gone wrong when everything runs just fine.

Detailed Explanation

Just npm install something and look at the output. This was from 100% success:

Rationale and Alternatives

Some people have suggested --silent as a good solution, but that will hide good errors as well, no?

Implementation

If everything worked, then don't show a bunch of scary things on the screen.

Prior Art

yarn, pnpm

@darcyclarke

Copy link
Copy Markdown
Contributor

@wesbos Just as a quick information gathering, can you show the output of both pnpm & yarn against this same project?

@darcyclarkedarcyclarke added Agenda will be discussed at the Open RFC call Enhancement new feature or improvement Needs Discussion is pending a discussion labels Dec 17, 2019
@wesbos

wesbos commented Dec 17, 2019

Copy link
Copy Markdown
ContributorAuthor

Seems like Yarn has even worse output in this case - same but not highlighted. pnpm is similar so apologies there.

I think a lot of this has to do with native modules puking on the screen - is there something that can be done to test if it worked or not and suppress these?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos you might try changing the loglevel; There's some options for you & shorthands here: https://docs.npmjs.com/misc/config#shorthands-and-other-cli-nicities (one of which includes --silent but that, as you noted/guessed, would hide errors)

Try npm install --quiet OR shorthand npm i -q (may/may not help in this case)

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Yeah, the problem isn't that I don't know how to fix it, it's that I get hundreds of emails/tweets/dms/slacks from people who think it broke on install when in reality I have to say "No, no 400 lines of errors, warnings is completely normal".

Would some sort of better default be good here?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos totally. Might want to update that "Prior Art" section though...

@wesbos

Copy link
Copy Markdown
ContributorAuthor

:) Also once all the issues with native modules go away, this is still the output:

Screen Shot 2019-12-17 at 10 15 55 AM

Everything but the security is unhelpful to me.

Even with --silent, I still get some stuff:

Screen Shot 2019-12-17 at 10 18 31 AM

It should also say "It worked!" or "successful install" once it's all done, no?

@darcyclarke

darcyclarke commented Dec 17, 2019

Copy link
Copy Markdown
Contributor

@wesbos appreciate these screens/added context. Definitely helps round things out. I do like/want sane defaults so I think that we'll focus on that as we go forward.

Hoping we can bring this up/prioritize early in the New Year at our first Open RFC call in 2020; Would love to have you hop on, if you can make it, to discuss this & we'll get any work associated prioritized accordingly.

@isaacs

Copy link
Copy Markdown
Contributor

We are already planning on running install scripts in a background process and only printing the results if the installation meaningfully fails. (Ie, exits non-zero for a non-optional installation.)

We held back on doing that because it would make the current fundraising approaches impossible, which was a bit more opinionated than we wanted to get at this time. With the arrival of npm fund, I think we're unblocked and ready to move forward on it, though.

@wesbos

Copy link
Copy Markdown
ContributorAuthor

Great - looking forward to that

@isaacs

Copy link
Copy Markdown
Contributor

@rbeer It's not a legit install error, though, because it's an optional dependency. It's probably fine to just show a warning that an optional dep was omitted. And, since we do installations in parallel, it gets pretty gnarly if you have multiple builds going on simultaneously sharing the same stdio. We plan to push all lifecycle scripts to a stdio-piped process, and print stdout/stderr only if it's a failure that we care about (ie, non-zero exit code for non-optional dependency). This will also allow us to prevent interleaved output.

@wesleytodd

Copy link
Copy Markdown

Is there an rfc for this background behavior @isaacs? This might break more than just the fund use case. Not that I think it is bad, I would just like to read and maybe give feedback on it.

@isaacs

Copy link
Copy Markdown
Contributor

@wesleytodd Hm, I don't see one. It looks like it was added to the roadmap before I switched back to a technical role with the CLI, could've been before the RFC process even started. We can write one up, though.

@darcyclarkedarcyclarke added Backlog a "backlogged" item that will be tracked in a Project Board Release 7.x and removed Agenda will be discussed at the Open RFC call labels Jan 22, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backloga "backlogged" item that will be tracked in a Project BoardEnhancementnew feature or improvementNeeds Discussionis pending a discussion

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@wesbos@darcyclarke@isaacs@wesleytodd