what do lines starting with double-slash '//' mean in a .npmrc?










0














I'd naively assumed that .npmrc lines with double slash ('//') indicate a comment, but that's clearly not the case, because when I delete them, I'm unable to publish to my local registry.



Example:





registry=https://npm.myregistry.io/
//email=me@mydomain.com
//npm.myregistry.io/:_authToken="Pgwb34F123EQdHqE7OoZA=="


If I remove the above // lines, publish results in



npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`


I can't find any reference to this syntax in npmrc documentation or the ini module parser documentation. I'm assuming it has something to do with synthesized properties?










share|improve this question




























    0














    I'd naively assumed that .npmrc lines with double slash ('//') indicate a comment, but that's clearly not the case, because when I delete them, I'm unable to publish to my local registry.



    Example:





    registry=https://npm.myregistry.io/
    //email=me@mydomain.com
    //npm.myregistry.io/:_authToken="Pgwb34F123EQdHqE7OoZA=="


    If I remove the above // lines, publish results in



    npm ERR! code ENEEDAUTH
    npm ERR! need auth auth required for publishing
    npm ERR! need auth You need to authorize this machine using `npm adduser`


    I can't find any reference to this syntax in npmrc documentation or the ini module parser documentation. I'm assuming it has something to do with synthesized properties?










    share|improve this question


























      0












      0








      0


      1





      I'd naively assumed that .npmrc lines with double slash ('//') indicate a comment, but that's clearly not the case, because when I delete them, I'm unable to publish to my local registry.



      Example:





      registry=https://npm.myregistry.io/
      //email=me@mydomain.com
      //npm.myregistry.io/:_authToken="Pgwb34F123EQdHqE7OoZA=="


      If I remove the above // lines, publish results in



      npm ERR! code ENEEDAUTH
      npm ERR! need auth auth required for publishing
      npm ERR! need auth You need to authorize this machine using `npm adduser`


      I can't find any reference to this syntax in npmrc documentation or the ini module parser documentation. I'm assuming it has something to do with synthesized properties?










      share|improve this question















      I'd naively assumed that .npmrc lines with double slash ('//') indicate a comment, but that's clearly not the case, because when I delete them, I'm unable to publish to my local registry.



      Example:





      registry=https://npm.myregistry.io/
      //email=me@mydomain.com
      //npm.myregistry.io/:_authToken="Pgwb34F123EQdHqE7OoZA=="


      If I remove the above // lines, publish results in



      npm ERR! code ENEEDAUTH
      npm ERR! need auth auth required for publishing
      npm ERR! need auth You need to authorize this machine using `npm adduser`


      I can't find any reference to this syntax in npmrc documentation or the ini module parser documentation. I'm assuming it has something to do with synthesized properties?







      node.js npm






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 13 '18 at 12:58









      Josh Lee

      117k23210241




      117k23210241










      asked Nov 12 '18 at 18:15









      Jolly Roger

      2,43421716




      2,43421716






















          1 Answer
          1






          active

          oldest

          votes


















          2














          // has no special meaning in .npmrc or any other .ini file.



          The ini syntax is key = value. So in this case the key is //npm.myregistry.io/:_authToken.



          This is a Protocol-relative URL, meaning an URL that will take the protocol automatically from the current page (you can actually type //google.com in the browser, and it should take you to https://google.com)



          Note that this may not necessarily be the URL used by npm for authentication. It's just a format chosen by the developers to hold the authToken (or other values) in the same string with the registry URL.






          share|improve this answer


















          • 1




            Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
            – RobC
            Nov 13 '18 at 14:18






          • 1




            For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
            – RobC
            Nov 13 '18 at 14:25






          • 1




            @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
            – mihai
            Nov 13 '18 at 14:38






          • 1




            Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
            – RobC
            Nov 13 '18 at 14:50






          • 1




            Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
            – Jolly Roger
            Nov 15 '18 at 0:45











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267884%2fwhat-do-lines-starting-with-double-slash-mean-in-a-npmrc%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          // has no special meaning in .npmrc or any other .ini file.



          The ini syntax is key = value. So in this case the key is //npm.myregistry.io/:_authToken.



          This is a Protocol-relative URL, meaning an URL that will take the protocol automatically from the current page (you can actually type //google.com in the browser, and it should take you to https://google.com)



          Note that this may not necessarily be the URL used by npm for authentication. It's just a format chosen by the developers to hold the authToken (or other values) in the same string with the registry URL.






          share|improve this answer


















          • 1




            Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
            – RobC
            Nov 13 '18 at 14:18






          • 1




            For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
            – RobC
            Nov 13 '18 at 14:25






          • 1




            @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
            – mihai
            Nov 13 '18 at 14:38






          • 1




            Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
            – RobC
            Nov 13 '18 at 14:50






          • 1




            Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
            – Jolly Roger
            Nov 15 '18 at 0:45
















          2














          // has no special meaning in .npmrc or any other .ini file.



          The ini syntax is key = value. So in this case the key is //npm.myregistry.io/:_authToken.



          This is a Protocol-relative URL, meaning an URL that will take the protocol automatically from the current page (you can actually type //google.com in the browser, and it should take you to https://google.com)



          Note that this may not necessarily be the URL used by npm for authentication. It's just a format chosen by the developers to hold the authToken (or other values) in the same string with the registry URL.






          share|improve this answer


















          • 1




            Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
            – RobC
            Nov 13 '18 at 14:18






          • 1




            For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
            – RobC
            Nov 13 '18 at 14:25






          • 1




            @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
            – mihai
            Nov 13 '18 at 14:38






          • 1




            Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
            – RobC
            Nov 13 '18 at 14:50






          • 1




            Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
            – Jolly Roger
            Nov 15 '18 at 0:45














          2












          2








          2






          // has no special meaning in .npmrc or any other .ini file.



          The ini syntax is key = value. So in this case the key is //npm.myregistry.io/:_authToken.



          This is a Protocol-relative URL, meaning an URL that will take the protocol automatically from the current page (you can actually type //google.com in the browser, and it should take you to https://google.com)



          Note that this may not necessarily be the URL used by npm for authentication. It's just a format chosen by the developers to hold the authToken (or other values) in the same string with the registry URL.






          share|improve this answer














          // has no special meaning in .npmrc or any other .ini file.



          The ini syntax is key = value. So in this case the key is //npm.myregistry.io/:_authToken.



          This is a Protocol-relative URL, meaning an URL that will take the protocol automatically from the current page (you can actually type //google.com in the browser, and it should take you to https://google.com)



          Note that this may not necessarily be the URL used by npm for authentication. It's just a format chosen by the developers to hold the authToken (or other values) in the same string with the registry URL.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 13 '18 at 18:02

























          answered Nov 13 '18 at 12:54









          mihai

          23.4k73968




          23.4k73968







          • 1




            Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
            – RobC
            Nov 13 '18 at 14:18






          • 1




            For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
            – RobC
            Nov 13 '18 at 14:25






          • 1




            @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
            – mihai
            Nov 13 '18 at 14:38






          • 1




            Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
            – RobC
            Nov 13 '18 at 14:50






          • 1




            Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
            – Jolly Roger
            Nov 15 '18 at 0:45













          • 1




            Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
            – RobC
            Nov 13 '18 at 14:18






          • 1




            For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
            – RobC
            Nov 13 '18 at 14:25






          • 1




            @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
            – mihai
            Nov 13 '18 at 14:38






          • 1




            Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
            – RobC
            Nov 13 '18 at 14:50






          • 1




            Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
            – Jolly Roger
            Nov 15 '18 at 0:45








          1




          1




          Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
          – RobC
          Nov 13 '18 at 14:18




          Good explanation @mihai. However, why is the key name //npm.myregistry.io/:_authToken instead of npm.myregistry.io/:_authToken (i.e. without // prefix)? Why use a Protocol-relative URL for a key name in this context of a .npmrc? Seems to me that a Protocol-relative URL would make more sense as a value and not a key.
          – RobC
          Nov 13 '18 at 14:18




          1




          1




          For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
          – RobC
          Nov 13 '18 at 14:25




          For me, when typing //google.com in the browser (FF, Safari, and Chrome) it resolves to file:////google.com
          – RobC
          Nov 13 '18 at 14:25




          1




          1




          @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
          – mihai
          Nov 13 '18 at 14:38




          @RobC it probably has to do with the internal logic of npm. What's stored in the .npmrc is not necessarily the URL used for authentification, it's just a way to hold the authToken in a format that also contains the registry URL. Here is where the token is read in the source code.
          – mihai
          Nov 13 '18 at 14:38




          1




          1




          Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
          – RobC
          Nov 13 '18 at 14:50




          Thanks for feedback. In the docs for .npmrc it says files are parsed by npm/ini. However I couldn't find any obvious indication of how // is parsed in the source code and it's many RegExp's.
          – RobC
          Nov 13 '18 at 14:50




          1




          1




          Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
          – Jolly Roger
          Nov 15 '18 at 0:45





          Ok, protocol-relative URLs are plausible, except that other entries also have a // that don't seem to be URIs, i.e. in my example above, there's //email=
          – Jolly Roger
          Nov 15 '18 at 0:45


















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267884%2fwhat-do-lines-starting-with-double-slash-mean-in-a-npmrc%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3

          Museum of Modern and Contemporary Art of Trento and Rovereto