feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@ybiquitous@zkat@isaacs@mikemimik@toyokazu03102478@darcyclarke
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@ybiquitous@zkat@isaacs@mikemimik@toyokazu03102478@darcyclarke
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

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

feat: npm repo support repository.directory field - #163

Closed
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory
Closed

feat: npm repo support repository.directory field#163
ybiquitous wants to merge 2 commits into
npm:release/v7.0.0-betafrom
ybiquitous:npm-repo-support-directory

Conversation

@ybiquitous

Copy link
Copy Markdown
Contributor

Summary

This PR makes npm repo possible to open a given repository's full URL instead of its root URL with the new repository.directory field.

For example, npm repo react-dom opens https://github.com/facebook/react/tree/master/packages/react-dom.

Background

npm@6.8.0 shipped the new feature to support repository.field in package.json.

For example:

{
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",
"directory": "packages/react-dom"
}
}

See also #140

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I think this change should test the following cases:

  • npm repo <github_hosted_package>
  • npm repo <gitlab_hosted_package>
  • npm repo <bitbucket_hosted_package>
  • (and so on...?)

But sadly I didn't know how to test these cases. 😢
To test the cases, should I change npm-registry-mock package, or is there some better way?

varmr=require('npm-registry-mock')

I hope someone would help me about testing... 🙏

@toyokazu03102478toyokazu03102478 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.

お願いいたします

@ybiquitous
ybiquitous marked this pull request as ready for review February 19, 2019 00:19
@ybiquitous
ybiquitous requested a review from a team as a code ownerFebruary 19, 2019 00:19
@zkat

zkat commented Feb 19, 2019

Copy link
Copy Markdown
Contributor

Here's an example of how to mock a packument request: https://github.com/npm/cli/blob/release-next/test/tap/aliases.js#L29-L54

You don't need to bother with mocking the tarball.

@zkatzkat added semver:minor new backwards-compatible feature in-progress labels Feb 19, 2019
@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat Thanks for your advice! I'll rebase after #167 is merged.

Comment threadtest/tap/repo.js
t.comment(stderr)

const res = fs.readFileSync(outFile, 'ascii')
t.equal(res, 'https://github.com/foo/test-repo-with-directory/tree/master/some%2Fdirectory\n')

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I expected .../some/directory, not .../some%2Fdirectory. 🤔
But I find this is a problem of hosted-git-info package.
So, I will open a new PR on npm/hosted-git-info. 💪

The relevant code is here:
https://github.com/npm/hosted-git-info/blob/067fd7f3559fc051fd56528f6231a70ec4e634d0/git-host.js#L38-L40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This has been fixed! So this test will actually fail now. We'll fix this up when landing this PR! :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@mikemimik Thanks for your response. I have not touched this PR for a long time, but can I start again?

If you have any advice, I would be glad to accept!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not necessary to start again. The @npm/cli-team triaged this pull-request today and we're accepting it into 6.14.0. We can fix up the test when we pull it into the release, it's no worries :)

You noted that hosted-git-info does some weird url-encoding, and you had to use "%2f". Since then hosted-git-info has had some changes and it's fixed. It now returns properly. The change to the test is just changing %2f back to / :D

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I understand it. I'm looking forward to a new release 😊

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

I added a test case and CI passed!

Notes

I thought test cases for possible Git hostings were necessary (not only GitHub).
But hosted-git-info package already tests possible hostings, so I added just the GitHub case and I think it enough to verify this PR feature.

@ybiquitous

Copy link
Copy Markdown
ContributorAuthor

@zkat I added the tests, so is there something I should do to review this PR?

@isaacsisaacs mentioned this pull request Jul 1, 2019
@mikemimikmikemimik added the Release 6.x work is associated with a specific npm 6 release label Nov 26, 2019
@mikemimikmikemimik added this to the Release 6.14.0 milestone Nov 26, 2019
mikemimik pushed a commit that referenced this pull request Dec 2, 2019
@mikemimikmikemimik added Priority Backlog a "backlogged" item that will be tracked in a Project Board pr: needs tests requires tests before merging labels Dec 3, 2019
@mikemimikmikemimik removed this from the Release 6.14.0 milestone Dec 3, 2019
jasonkarns added a commit to github/optimizely-javascript-sdk that referenced this pull request May 6, 2020
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the `npm repo` command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
mjc1283 pushed a commit to optimizely/javascript-sdk that referenced this pull request May 8, 2020
Summary:
Configure each package's package.json#repository.directory property to properly reflect the location of the package within the repository.
This is the standard configuration value for deep-linking into a
package's directory within a monorepo.
npm RFC: https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md
This will ensure the packages' pages on npmjs.org will link to the
correct directory.
Also, _eventually_, it will ensure the npm repo command opens to the
correct location: npm/cli#163
Lastly, this is _required_ for monorepo packages to be successfully
published to the GitHub Package Registry (if that is ever considered in
the future).
https://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
@darcyclarkedarcyclarke added this to the OSS - Sprint 8 milestone Jun 11, 2020
@darcyclarke
darcyclarke changed the base branch from latest to release/v7.0.0-betaJuly 31, 2020 19:01
@darcyclarkedarcyclarke added Release 7.x work is associated with a specific npm 7 release Needs Review and removed Priority Backlog a "backlogged" item that will be tracked in a Project Board Release 6.x work is associated with a specific npm 6 release pr: needs tests requires tests before merging labels Jul 31, 2020
isaacs pushed a commit that referenced this pull request Aug 4, 2020
@isaacs

Copy link
Copy Markdown
Contributor

This will be in the v7 beta. Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release 7.xwork is associated with a specific npm 7 releasesemver:minornew backwards-compatible feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@ybiquitous@zkat@isaacs@mikemimik@toyokazu03102478@darcyclarke