npm ਨੂੰ VPN ਨਹੀਂ, ਪੈਕੇਜ ਸਕੋਪ ਅਨੁਸਾਰ ਰਜਿਸਟਰੀ ਚੁਣਨ ਦਿਓ
ਸਕੋਪ ਐਂਟਰੀ ਕੰਪਨੀ ਦੇ ਪੈਕੇਜ ਨਿੱਜੀ ਰਜਿਸਟਰੀ ਵਿੱਚ ਭੇਜਦੀ ਹੈ ਅਤੇ ਬਾਕੀ ਸਭ ਜਨਤਕ ਰਹਿਣ ਦਿੰਦੀ ਹੈ। ਰੂਟਿੰਗ, ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਅਤੇ ਤਰਜੀਹ ਹੋਰ ਤਿੰਨ ਫੈਸਲੇ ਹਨ।
VPN ਨਾਲ ਜੁੜਨ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਕਿ ਦਿਨ ਵਿੱਚ ਦੋ ਵਾਰ npm ਦੀ ਰਜਿਸਟਰੀ ਸੈਟਿੰਗ ਸੰਪਾਦਿਤ ਕਰਨੀ ਪਵੇ। ਪ੍ਰੋਜੈਕਟ-ਪੱਧਰ ਦੀ ਕਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਸਕੋਪ ਐਂਟਰੀ ਕੰਪਨੀ ਦੇ ਪੈਕੇਜ ਇੱਕ ਰਜਿਸਟਰੀ ਵਿੱਚ ਅਤੇ ਬਾਕੀ ਸਭ ਜਨਤਕ ਰਜਿਸਟਰੀ ਵਿੱਚ ਭੇਜ ਸਕਦੀ ਹੈ, ਕਿਸੇ ਸਵਿਚਿੰਗ ਤੋਂ ਬਿਨਾਂ ਅਤੇ ਸ਼ੁੱਕਰਵਾਰ ਦੁਪਹਿਰ ਪਿੱਛੇ ਰਹਿ ਜਾਣ ਵਾਲੇ ਕਿਸੇ ਓਵਰਰਾਈਡ ਤੋਂ ਬਿਨਾਂ। ਮੁਸ਼ਕਲ ਇਹ ਹੈ ਕਿ ਇਹ ਸਿਰਫ਼ ਨਾਮਕਰਨ ਹੱਲ ਕਰਦਾ ਹੈ; ਰੂਟਿੰਗ, ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਅਤੇ ਕਨਫਿਗਰੇਸ਼ਨ ਤਰਜੀਹ ਤਿੰਨ ਵੱਖਰੀਆਂ ਚੀਜ਼ਾਂ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਆਪਣੇ ਢੰਗ ਨਾਲ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ।
ਦੋ ਨਾਮ, ਦੋ ਮੰਜ਼ਿਲਾਂ
npm ਪੈਕੇਜ ਦੇ ਨਾਮ ਵਿੱਚ ਸਕੋਪ ਹੁੰਦਾ ਹੈ ਜਾਂ ਨਹੀਂ। ਸਕੋਪ ਵਾਲਾ ਨਾਮ @ ਚਿੰਨ੍ਹ ਅਤੇ ਸਕੋਪ ਪਛਾਣਕਰਤਾ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਕਨਫਿਗਰੇਸ਼ਨ ਜਿਸ ਨੂੰ ਮੈਪ ਕਰ ਸਕਦੀ ਹੈ ਉਹੀ ਪਛਾਣਕਰਤਾ ਹੈ। ਪੈਕੇਜ ਦੀ ਹੋਰ ਕੋਈ ਚੀਜ਼ ਮੈਪਿੰਗ ਲਈ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ। ਰਜਿਸਟਰੀ ਪੈਕੇਜ ਦੇ ਅੰਦਰੂਨੀ ਜਾਂ ਜਨਤਕ ਹੋਣ ਦੇ ਆਧਾਰ 'ਤੇ ਕਦੇ ਬੇਨਤੀ ਨਹੀਂ ਦੇਖਦੀ; ਇਹ ਸਿਰਫ਼ ਨਾਮ ਦੇਖਦੀ ਹੈ।
ਇਸ ਲਈ ਹੇਠਾਂ ਦਿੱਤੀ ਫਾਈਲ ਤਿੰਨ ਲਾਈਨਾਂ ਵਿੱਚ ਦੋ ਇਰਾਦੇ ਪ੍ਰਗਟ ਕਰਦੀ ਹੈ: ਜਨਤਕ ਪੈਕੇਜ ਜਨਤਕ ਰਜਿਸਟਰੀ ਵਿੱਚ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਕੰਪਨੀ ਸਕੋਪ ਹੇਠਾਂ ਦੇ ਪੈਕੇਜ ਉਸ ਹੋਸਟ ਲਈ ਟੋਕਨ ਨਾਲ ਕੰਪਨੀ ਦੀ ਰਜਿਸਟਰੀ ਵਿੱਚ ਜਾਂਦੇ ਹਨ।
registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}ਸਕੋਪ, ਹੋਸਟ ਅਤੇ ਵੇਰੀਏਬਲ ਦਾ ਨਾਮ ਉਸ ਨਾਲ ਬਦਲੋ ਜੋ ਸੰਸਥਾ ਅਸਲ ਵਿੱਚ ਦਿੰਦੀ ਹੈ। ਢਾਂਚਾ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਉਦਾਹਰਨ ਮੁੱਲ ਨਹੀਂ। ਦੋ ਕਨਫਿਗਰੇਸ਼ਨ ਲਾਈਨਾਂ ਪੂਰੀ ਨੀਤੀ ਚੁੱਕਦੀਆਂ ਹਨ, ਇਸ ਲਈ ਉਨ੍ਹਾਂ ਨੂੰ ਨਕਲ ਕਰਨ ਦੀ ਬਜਾਏ ਸਮਝਣਾ ਚਾਹੀਦਾ ਹੈ।
ਮੈਪਿੰਗ ਅਤੇ ਨੈੱਟਵਰਕ ਨੂੰ ਮਨ ਵਿੱਚ ਵੱਖਰੇ ਖਾਨਿਆਂ ਵਿੱਚ ਰੱਖੋ। ਸਕੋਪ ਐਂਟਰੀ ਅਪਹੁੰਚ ਹੋਸਟ ਨੂੰ ਪਹੁੰਚਯੋਗ ਨਹੀਂ ਬਣਾ ਸਕਦੀ, ਅਤੇ ਕੰਮ ਕਰਨ ਵਾਲੀ ਸੁਰੰਗ npm ਨੂੰ ਨਹੀਂ ਦੱਸ ਸਕਦੀ ਕਿ ਪੈਕੇਜ ਕਿਹੜੀ ਰਜਿਸਟਰੀ ਦਾ ਹੈ।
ਫਾਈਲ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਲਿਖੋ
npm ਕਈ ਫਾਈਲਾਂ ਪੜ੍ਹਦਾ ਹੈ ਫਿਰ ਵੀ ਆਪਣੀ ਸੋਚ ਵਿੱਚ ਪ੍ਰੋਜੈਕਟ ਫਾਈਲ ਪਹਿਲੀ ਰੱਖੋ। ਪ੍ਰੋਜੈਕਟ ਡਾਇਰੈਕਟਰੀ ਦੀ .npmrc ਉਹ ਹੈ ਜੋ ਤੁਹਾਡੇ ਸਹਿਕਰਮੀ ਰਿਪੋਜ਼ਟਰੀ ਰਾਹੀਂ ਵਿਰਾਸਤ ਵਿੱਚ ਲੈਂਦੇ ਹਨ, ਇਸ ਲਈ ਇਸ ਨੂੰ ਤੁਹਾਡੇ ਨਿੱਜੀ ਟੋਕਨ ਦੀ ਬਜਾਏ ਸਾਂਝੀ ਨੀਤੀ ਪ੍ਰਗਟ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਉਹੀ ਫਾਈਲ ਸਮੀਖਿਅਕ ਵੀ ਪੜ੍ਹੇਗਾ। ਇਸ ਨੂੰ ਇੱਕ ਨਜ਼ਰ ਵਿੱਚ ਸਮੀਖਿਆ ਕਰਨ ਯੋਗ ਛੋਟੀ ਰੱਖੋ।
ਸੰਸਥਾ ਨੇ ਹੋਰ ਫੈਸਲਾ ਨਾ ਲਿਆ ਹੋਵੇ ਤਾਂ ਡਿਫਾਲਟ registry ਲਾਈਨ ਨੂੰ ਜਨਤਕ ਰਜਿਸਟਰੀ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਰਹਿਣ ਦਿਓ। ਇਸ ਨੂੰ ਹਟਾਉਣ ਨਾਲ ਮਸ਼ੀਨ ਉਪਭੋਗਤਾ-ਪੱਧਰ ਦੀ ਫਾਈਲ ਕੀ ਕਹਿੰਦੀ ਹੈ 'ਤੇ ਨਿਰਭਰ ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਇਹੀ ਉਹ ਅਸਿੱਧੀ ਨਿਰਭਰਤਾ ਹੈ ਜੋ ਦੋ ਲੈਪਟਾਪਾਂ 'ਤੇ ਵੱਖਰੇ ਨਤੀਜੇ ਦਿੰਦੀ ਹੈ।
ਸਕੋਪ ਲਾਈਨ ਵਾਈਲਡਕਾਰਡ ਨਹੀਂ ਹੈ। ਸਕੋਪ ਤੋਂ ਬਾਹਰ ਦਾ ਨਾਮ ਡਿਫਾਲਟ ਵਰਤਦਾ ਰਹਿੰਦਾ ਹੈ, ਅਤੇ ਤੁਹਾਡੇ ਆਪਣੇ ਨਾ ਲਿਖੇ ਹਰ ਨਿਰਭਰਤਾ ਲਈ ਇਹੀ ਵਿਵਹਾਰ ਚਾਹੀਦਾ ਹੈ।
ਫਾਈਲ ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚੋ ਕਿ ਇਹ ਕਿਸ ਵਿੱਚ ਹੱਲ ਹੁੰਦੀ ਹੈ, ਅਸਲ ਇੰਸਟਾਲ ਦੀ ਬਜਾਏ ਇੱਕ ਵਾਰ ਵਰਤੋਂ ਵਾਲੇ ਪੈਕੇਜ ਨਾਮ ਨਾਲ, ਤਾਂ ਜੋ ਗਲਤੀ ਦੀ ਕੋਈ ਕੀਮਤ ਨਾ ਪਵੇ।
ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਪ੍ਰੋਜੈਕਟ ਦੇ ਨਹੀਂ, ਹੋਸਟ ਦੇ ਹੁੰਦੇ ਹਨ
ਪ੍ਰਮਾਣਿਕਤਾ ਐਂਟਰੀਆਂ ਰਜਿਸਟਰੀ ਹੋਸਟ ਨਾਲ ਅਤੇ ਜਿੱਥੇ ਰਜਿਸਟਰੀ ਨੂੰ ਲੋੜ ਹੋਵੇ ਉੱਥੇ ਮਾਰਗ ਨਾਲ ਜੁੜੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਇਸੇ ਲਈ ਟੋਕਨ ਲਾਈਨ ਸਕੋਪ ਦੀ ਬਜਾਏ ਦੋਹਰੇ ਸਲੈਸ਼ ਅਤੇ ਹੋਸਟ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਵਾਰ ਤੁਸੀਂ ਉਸ ਥਾਂ 'ਤੇ ਹੋਸਟ ਦੇਖ ਲਓ, ਲਾਈਨ ਦਾ ਬਾਕੀ ਹਿੱਸਾ ਮਨਮਾਨੇ ਵਿਰਾਮ ਚਿੰਨ੍ਹਾਂ ਵਾਂਗ ਦਿਸਣਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਪਤਾ ਹੈ, ਅਤੇ ਟੋਕਨ ਉਸ ਨਾਲ ਜੁੜਿਆ ਹੈ।
ਵਾਤਾਵਰਨ ਵੇਰੀਏਬਲ ਵਰਤਣ ਨਾਲ ਸ਼ਬਦੀ ਟੋਕਨ ਰਿਪੋਜ਼ਟਰੀ ਦੀ ਫਾਈਲ ਤੋਂ ਬਾਹਰ ਰਹਿੰਦਾ ਹੈ। ਇਹ ਟੋਕਨ ਨੂੰ ਹਰ ਜਗ੍ਹਾ ਅਦਿੱਖ ਨਹੀਂ ਬਣਾਉਂਦਾ; ਇਹ ਪ੍ਰਕਿਰਿਆ ਦੇ ਵਾਤਾਵਰਨ ਵਿੱਚ ਅਜੇ ਵੀ ਦਿਸਦਾ ਹੈ, ਅਤੇ ਕਨਫਿਗਰੇਸ਼ਨ ਛਾਪਣ ਵਾਲਾ ਆਦੇਸ਼ ਇਸ ਨੂੰ ਜ਼ਾਹਰ ਕਰ ਸਕਦਾ ਹੈ।
ਸੰਸਥਾ ਵੱਲੋਂ ਮਨਜ਼ੂਰ ਕਿਸੇ ਵੀ ਸਥਾਨਕ ਜਾਂ CI ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਵਿਧੀ ਰਾਹੀਂ ਵੇਰੀਏਬਲ ਦਿਓ, ਅਤੇ ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਨਕਲ ਹੋ ਸਕਣ ਵਾਲੇ ਉਦਾਹਰਨ ਵਿੱਚ ਕਦੇ ਅਸਲ ਟੋਕਨ ਨਾ ਚਿਪਕਾਓ।
ਜੇ ਦੋ ਰਜਿਸਟਰੀਆਂ ਖੇਡ ਵਿੱਚ ਹਨ ਤਾਂ ਹਰ ਇੱਕ ਨੂੰ ਆਪਣੀ ਐਂਟਰੀ ਮਿਲਦੀ ਹੈ। ਇੱਕੋ ਅਯੋਗ ਟੋਕਨ ਸੈਟਿੰਗ ਸਭ ਤੋਂ ਵਧੀਆ ਸਥਿਤੀ ਵਿੱਚ ਅਸਪਸ਼ਟ ਹੈ ਅਤੇ ਸਭ ਤੋਂ ਮਾੜੀ ਸਥਿਤੀ ਵਿੱਚ ਗਲਤ ਹੋਸਟ 'ਤੇ ਭੇਜੀ ਜਾਂਦੀ ਹੈ।
ਜਦੋਂ ਗਲਤ ਰਜਿਸਟਰੀ ਜਿੱਤਦੀ ਹੈ
ਕਨਫਿਗਰੇਸ਼ਨ ਪਰਤਦਾਰ ਹੈ, ਅਤੇ ਲਾਗੂ ਮੁੱਲ ਜ਼ਰੂਰੀ ਨਹੀਂ ਕਿ ਉਸ ਫਾਈਲ ਦਾ ਮੁੱਲ ਹੋਵੇ ਜੋ ਤੁਸੀਂ ਹੁਣੇ ਸੰਪਾਦਿਤ ਕੀਤੀ। ਪ੍ਰੋਜੈਕਟ ਸੈਟਿੰਗਾਂ, ਉਪਭੋਗਤਾ ਸੈਟਿੰਗਾਂ, ਗਲੋਬਲ ਸੈਟਿੰਗਾਂ ਅਤੇ ਵਾਤਾਵਰਨ ਵੇਰੀਏਬਲ ਸਭ ਹਿੱਸਾ ਲੈਂਦੇ ਹਨ। ਇਹੀ ਪਰਤਾਂ ਕਾਰਨ ਸੁਧਾਰ ਤੁਹਾਡੀ ਮਸ਼ੀਨ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ ਪਰ ਸਹਿਕਰਮੀ ਦੇ ਕੰਟੇਨਰ ਵਿੱਚ ਨਹੀਂ। ਇਹੀ ਕਾਰਨ ਹੈ ਕਿ ਇਸ ਬਾਰੇ ਬਹਿਸ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰਭਾਵੀ ਮੁੱਲ ਛਾਪਣਾ ਚਾਹੀਦਾ ਹੈ।
ਵਾਤਾਵਰਨ ਵੇਰੀਏਬਲ CI ਵਿੱਚ ਆਮ ਦੋਸ਼ੀ ਹੈ, ਜਿੱਥੇ ਇੱਕ ਜੌਬ ਰਜਿਸਟਰੀ ਇੱਕ ਵਾਰ ਸੈੱਟ ਕਰਦੀ ਹੈ ਅਤੇ ਹਰ ਅਗਲਾ ਕਦਮ ਉਸ ਨੂੰ ਵਿਰਾਸਤ ਵਿੱਚ ਲੈਂਦਾ ਹੈ। ਦੂਜਾ ਸਭ ਤੋਂ ਆਮ ਡਿਵੈਲਪਰ ਦੀ ਮਸ਼ੀਨ 'ਤੇ ਉਪਭੋਗਤਾ-ਪੱਧਰ ਦੀ ਫਾਈਲ ਹੈ ਜੋ ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਕਹੇ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਦੀ ਹੈ।
ਹੋਰ ਕੁਝ ਵੀ ਡੀਬੱਗ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਸਕੋਪ ਵਾਲੇ ਅਤੇ ਇੱਕ ਸਕੋਪ ਬਿਨਾਂ ਨਾਮ ਲਈ ਪ੍ਰਭਾਵੀ ਕਨਫਿਗਰੇਸ਼ਨ ਅਤੇ ਹੱਲ ਹੋਈ ਰਜਿਸਟਰੀ ਛਾਪੋ। ਜੇ ਉਹ ਦੋ ਜਵਾਬ ਤੁਹਾਡੀ ਉਮੀਦ ਮੁਤਾਬਕ ਹਨ ਤਾਂ ਸਮੱਸਿਆ ਨੈੱਟਵਰਕ ਦੀ ਹੈ; ਜੇ ਨਹੀਂ, ਤਾਂ ਸਮੱਸਿਆ ਕਨਫਿਗਰੇਸ਼ਨ ਦੀ ਹੈ ਅਤੇ ਕੋਈ ਵੀ VPN ਕੰਮ ਮਦਦ ਨਹੀਂ ਕਰੇਗਾ।
ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਚੈੱਕਲਿਸਟ
ਪੱਕਾ ਕਰੋ ਕਿ ਸਕੋਪ ਨਾਮ ਅਸਲ ਵਿੱਚ ਪ੍ਰਕਾਸ਼ਿਤ ਪੈਕੇਜਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਡਿਫਾਲਟ ਰਜਿਸਟਰੀ ਸਪਸ਼ਟ ਹੈ, ਅਤੇ ਟੋਕਨ ਲਾਈਨ ਸਹੀ ਹੋਸਟ ਦਾ ਨਾਮ ਦਿੰਦੀ ਹੈ। ਸਕੋਪ ਵਿੱਚ ਟਾਈਪੋ ਸਭ ਤੋਂ ਅਜੀਬ ਫੇਲ੍ਹ ਬਣਾਉਂਦੀ ਹੈ, ਕਿਉਂਕਿ ਪੈਕੇਜ ਜਨਤਕ ਰਜਿਸਟਰੀ ਤੋਂ ਹੱਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਉਸੇ ਨਾਮ ਦਾ ਕਿਸੇ ਹੋਰ ਦਾ ਮੌਡਿਊਲ ਵਾਪਸ ਦਿੰਦਾ ਹੈ। ਟੋਕਨ ਡੀਬੱਗ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਨਾਮ ਜਾਂਚੋ।
ਪੱਕਾ ਕਰੋ ਕਿ ਨਿੱਜੀ ਰਜਿਸਟਰੀ ਇੰਸਟਾਲ ਚਲਾਉਣ ਵਾਲੇ ਸੰਦਰਭ ਦੀ ਮਸ਼ੀਨ ਤੋਂ ਪਹੁੰਚਯੋਗ ਹੈ, ਸਿਰਫ਼ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਤੋਂ ਨਹੀਂ। ਇਹ ਫ਼ਰਕ ਉਦੋਂ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਪ੍ਰੌਕਸੀ ਜਾਂ ਕੰਟੇਨਰ ਦੀ ਰੂਟਿੰਗ ਤੁਹਾਡੇ ਸ਼ੈੱਲ ਤੋਂ ਵੱਖਰੀ ਹੋਵੇ।
ਫਿਰ ਕੈਸ਼ ਕੀਤੇ ਪੈਕੇਜਾਂ ਤੋਂ ਬਿਨਾਂ ਸਾਫ਼ ਚੈੱਕਆਉਟ 'ਤੇ ਵਿਵਹਾਰ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। ਨਵਾਂ ਇੰਸਟਾਲ ਹੀ ਇੱਕੋ-ਇੱਕ ਟੈਸਟ ਹੈ ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਨਵਾਂ ਸਹਿਕਰਮੀ ਕੀ ਅਨੁਭਵ ਕਰੇਗਾ।