κ°μΈ ν¨ν€μ§ μ€μΉλ₯Ό νμ©νλ €λ©΄ Yarnμ΄ μμ² ν€λμ ν ν°μ 보λ΄μΌ ν©λλ€.
κ°μΈ ν¨ν€μ§λ @scoped/packages
μΌλ‘ μΆνλμλ€κ° npm publish --access=restricted
. ν¨ν€μ§μ κΆνμ μμ§ μΆκ°λμ§ μμ npm access
λ° npm team
λ₯Ό ν΅ν΄ κ΄λ¦¬ λ©λλ€.
npm ν΄λΌμ΄μΈνΈμμ μ΄ ν ν°μ .npmrc
λλ©° λ€μκ³Ό κ°μ΅λλ€.
<strong i="15">@nameofscope</strong>:registry=https://registry.npmjs.com/
//registry.npmjs.com/:_authToken=abc123
κ·Έλ¦¬κ³ λ€μ ν€λλ‘ μ μ‘λ©λλ€.
Authorization: Bearer abc123
# alternatively:
Authorization: Basic username:password # <= base64
ν ν°μ κ²μνκΈ° μν ν¨ν€μ§ κ° μμ΅λλ€. npmκ³Ό κ°μ λ°©μμΌλ‘ ν ν°μ μ μ₯νκ³ μΆμ§ μμ μλ μμ΅λλ€.
μ΄ ν ν°μ .npmrc
μ npm login
.npmrc
μ μΆκ°λ©λλ€. κ·Έλ¬λ yarn login
λ μΈμ¦μ‘°μ°¨ νμ§ μμΌλ―λ‘(μ¬μ©μ μ΄λ¦κ³Ό μ΄λ©μΌλ§ μ μ₯) μ¬μ©μκ° μ€μΉ μ μΈμ¦νλλ‘ κ°μ ν μ μμ΅λλ€(μ΄ κ²½μ° μΌμ’
μ CI μλ²μ© μ€μΉ μ€ν¬λ¦½ν
μ ν΄κ²°ν΄μΌ ν©λλ€. νκ²½ λ³μ).
λν Yarn μ¬μ©μκ° μ€μλ‘ λ¬΄μΈκ°λ₯Ό 곡κ°μ μΌλ‘ κ²μνμ§ μλλ‘ ν΄μΌ ν©λλ€.
μ¬κΈ°μ μ΄λ―Έ npm λ‘κ·ΈμΈ λ° μΈμ¦ λ‘μ§μ΄ μμ΅λλ€ . μν¬νλ‘λ₯Ό μ λ ¬νκΈ°λ§ νλ©΄ λ©λλ€.
κ°μΈ λ μ§μ€νΈλ¦¬μ νμ μΈμ¦ ν ν°μ΄ νμν κ²μ μλλλ€. μλ₯Ό λ€μ΄ νμ¬ VPNμ ν΅ν΄ κ°μΈ λ μ§μ€νΈλ¦¬μ μ‘μΈμ€ν©λλ€.
^^ λμν©λλ€. _λ²μλΉ_ λ³λμ λ μ§μ€νΈλ¦¬ μ°κ²°μ νμ©νλ κ²λ§μΌλ‘λ μΆ©λΆν©λλ€(λ€λ₯Έ λ§μ μ¬λλ€λ μμ¬λ©λλ€).
μ΄ κ²½μ° μΌμ’ μ νκ²½ λ³μλ₯Ό ν΅ν΄ CI μλ²μ λν μ΄λ¬ν μ€μΉ μ€ν¬λ¦½ν μ ν΄κ²°ν΄μΌ ν©λλ€.
"μ΄λ―Έ μ΄ λ Όλ¦¬κ° μμ΅λλ€"λΌκ³ λ§νλ©΄ Authorization ν€λκ° λ μ§μ€νΈλ¦¬λ‘ μ μ‘λλ κ²½λ‘κ° νμλμ§ μμ΅λλ€. νλκ° μλ€λ©΄ λ μ΅μ’ μ μΈ κ²μ΄ μ 리λλ λμ μ΄ λͺ¨λ κ²μ΄ μλνλλ‘ νλ μμ ν΄κ²° λ°©λ²μ΄ μμ μ μμ΅λλ€. λ΄κ° λκ°λ₯Ό λμΉκ³ μμ΅λκΉ?
+1μ 곡κ°λ ν¨ν€μ§κ° μ€ν¨ν κ²μ²λΌ 보μ΄λλΌλ λ²μκ° μ§μ λ ν¨ν€μ§μ²λΌ 보μ λλ€.
@djforth μ μΆκ° νλλ° λμΌν μ€λ₯κ° λ°μν©λλ€. λ²μ ν¨ν€μ§κ° μ€ν¨νκ³ μμ΅λλ€. ν¨ν€μ§ μ΄λ¦μ /
λ₯Ό %2f
ν©λλ€. μ΄λ ν¨ν€μ§λ₯Ό μ°ΎκΈ° μν npm μμ²μ΄ μ€ν¨ν¨μ μλ―Έν©λλ€.
μ: Error: https://registry.yarnpkg.com/@company%2fdata: Not found
μΈμ¦μ΄ νμν κ²½μ° μ€ν¨νλ λ°©μμ λλ€. κ³΅κ° λ²μ ν¨ν€μ§μμ μλνλλ‘ νμ΅λλ€.
#839 λ° #1146μΌλ‘ μμ ν΄μΌ ν©λλ€.
@devongovett λͺ κ°μ§ λ¬Έμ κ° λ°μνμ΅λλ€.
λ€μμ μΈμ¦μ μ¬μ©ν΄μΌ νλμ§ μ¬λΆλ₯Ό νμΈνλ κ²μ λλ€.
if (this.token || (alwaysAuth && requestUrl.startsWith(registry))) {
headers.authorization = this.getAuth(pathname);
}
λ μ§μ€νΈλ¦¬κ° http://registry.npmjs.org/
μ΄λ©΄ https μμ²μ requestUrl.startsWith(registry)
λλ¬Έμ μΈμ¦μ 첨λΆνμ§ λͺ»ν©λλ€.
yarn config get registry
λ₯Ό registry.yarnpkg.org
λ‘ μ€μ νλλ° @my-org:registry': 'https://registry.npmjs.org/',
λμ κ°μΈ λͺ¨λμ κ°μ Έμ€λ €κ³ ν λ μ¬μ©λμμ΅λλ€.
κ·Έλμ λλ₯Όμν μμ μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
//if (this.token || (alwaysAuth && requestUrl.startsWith(registry))) {
if (this.token || (alwaysAuth)) {
λλ λν NpmRegistry#request
to @my-org%2fmodule
λν μ΄κΈ° νΈμΆμ
μ, νμ¬λ λ체 https://registry.npmjs.com/μ ν¨κ» https://registry.yarnpkg.com/ μ¬κΈ°μ 체ν¬λ₯Ό νΌλνλ, μ¬κΈ° .
νΈμ§: μ΄ κ²μλ¬Όμ 무μνμμμ€ - κ·Έκ²μ λ¨μ§ μ΄λ€ μ΄μ λ‘ μλνκΈ° μμνμ΅λλ€.
npm adduser --registry=http://registry.npmjs.org --scope=<strong i="7">@foo</strong> --always-auth
μ¬μ©νμ¬ npmμμ scope
μ λ‘κ·ΈμΈν΄μΌ νμ΅λλ€.
λ΄κ° μ€νν λ :
npm3 adduser --registry=http://registry.npmjs.org --scope=<strong i="12">@foo</strong> --always-auth
λ΄ npmμ λ€μκ³Ό κ°μ΅λλ€.
_auth="xxx"
[email protected]
strict-ssl=false
//registry.npmjs.org/:_authToken=xxx
registry=http://registry.npmjs.org/
<strong i="16">@foo</strong>:registry=http://registry.npmjs.org/
save=false
save-exact=false
save-prefix=^
always-auth=true
NpmRegistry#getAuth
λ λ€μκ³Ό κ°μ΅λλ€.
getAuth(packageName: string): string {
if (this.token) {
return this.token;
}
for (let registry of [this.getRegistry(packageName), '', DEFAULT_REGISTRY]) {
registry = registry.replace(/^https?:/, '');
// Check for bearer token.
console.log({registry})
let auth = this.getScopedOption(registry, '_authToken');
if (auth) {
return `Bearer ${String(auth)}`;
}
// Check for basic auth token.
auth = this.getScopedOption(registry, '_auth');
if (auth) {
return `Basic ${String(auth)}`;
}
// Check for basic username/password auth.
const username = this.getScopedOption(registry, 'username');
const password = this.getScopedOption(registry, '_password');
if (username && password) {
const pw = new Buffer(String(password), 'base64').toString();
return 'Basic ' + new Buffer(String(username) + ':' + pw).toString('base64');
}
}
return '';
}
μΉμΈ ν€λ Basic xxx
μ¬μ©νμ¬ λλ©λλ€. _auth
ν€λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
μ΄λ΄,
Sinopiaλ‘ λ§λ λΉκ³΅κ° npm λ μ§μ€νΈλ¦¬μ κ²μν μ μλ μ¬λμ΄ μμ΅λκΉ? npm publish
κ·Έλ κ² ν μ μμ§λ§ yarn publish
λ κ²μ λ¨κ³μμ μμν 걸립λλ€. yarn config set registry
λ μ§μ€νΈλ¦¬λ₯Ό λ³κ²½νμ΅λλ€. λ‘κ·ΈμΈ λ¨κ³μμ λΉλ°λ²νΈλ₯Ό μ
λ ₯νλΌλ λ©μμ§κ° νμλμ§ μμ΅λλ€.
κ°μΈ ν¨ν€μ§μ λν μμ μ¬νμ΄ μμ΅λκΉ? μμμ μ€λͺ
ν λ¬Έμ @devongovett λ CIμμ μ λ₯Ό yarn config set registry https://registry.npmjs.org/
λ‘ κ°μΈ ν¨ν€μ§μ λν μμ²μ λν΄ yarnμ΄ μΈμ¦ ν ν°μ μ€μ νλλ‘ νλ κ²μ
λλ€.
μ λ yarn login
κ° λΉλ°λ²νΈλ₯Ό λ¬»μ§ μμ Gemfury(https://gemfury.com)λ₯Ό μ¬μ©ν μ μλ€λ λ¬Έμ λ₯Ό κ²ͺκ³ μμ΅λλ€. μ΄ λ¬Έμ μ κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ΅λλ€. μ΄μ λν΄ λ³λμ λ¬Έμ λ₯Ό λ§λ€μ΄μΌ ν©λκΉ?
μΈκΈνμ§ μμ λ λ€λ₯Έ μ¬μ© μ¬λ‘:
git μ μ₯μλ https λλ sshλ₯Ό ν΅ν΄ κ°μ Έμ¬ μ μμ΅λλ€. μ μ₯μκ° λΉκ³΅κ°μΈ κ²½μ° μ격 μ¦λͺ
μ΄ νμν©λλ€(duh). Herokuμ λ°°ν¬ν λ .netrc
λ .netrc λΉλν©μ μ¬μ©
@rovansteen yarn login
μλμ μΌλ‘ λΉλ°λ²νΈλ₯Ό λ¬»μ§ μμ΅λλ€. μλͺ»λ 보μ κ΄νμ΄κΈ° λλ¬Έμ μ격 μ¦λͺ
μ΄λ API ν ν°μ μ μ₯νκ³ μΆμ§ μμ΅λλ€.
@thejameskyle μ, λ§μ΄ λλ€μ. Gemfuryμλ API ν ν°μ μ¬μ©νλ λ°©λ²μ΄ μμΌλ©° Yarnκ³Ό μ μλνλ€λ κ²μ μμμ΅λλ€. κ°μ¬ ν΄μ!
κ°μΈ λ²μ κ΄λ ¨ λ μ§μ€νΈλ¦¬μμ μ€μ tarballμ κ°μ Έμ€λ λ° λ¬Έμ κ° μμ΅λλ€. λ©νλ°μ΄ν°λ μ μμ μΌλ‘ μμ λμ§λ§ tarball μμ²μ κΆν λΆμ¬ ν€λκ° ν¬ν¨λμ§ μμ κ² κ°μ΅λλ€.
NpmRegistry#request
μ΄ νμ΄ λ²μΈμΌλ‘ 보μ
λλ€. λμ ν¨ν€μ§ μ΄λ¦μ κΈ°λνλ κ²μ²λΌ λ³΄μΌ λ tarballμ κ²½λ‘λ‘ getRegistry
λ₯Ό νΈμΆν©λλ€. κ·Έ λλ¬Έμ λ²μλ₯Ό κ²μν μ μκ³ κΈ°λ³Έ λ μ§μ€νΈλ¦¬μ λν μ€μ μΌλ‘ λ체λ©λλ€.
URLμμ λ²μλ₯Ό κ²°μ νκΈ° μν΄ getScope
λ₯Ό νμ₯νλ κ²μ μμν μ μμ§λ§(μ΄λ κ² νλ©΄ PRμ μ΄ μ μμ΄ κΈ°μ©λλ€), μ μ¬μ μΌλ‘ μ€λ₯κ° λ°μνκΈ° μ¬μ΄ κ² κ°μ΅λλ€. μ°κ²°λ ν¨ν€μ§ μ΄λ¦μ μ°κ²°ν΄μΌ ν©λκΉ?
(νΈμ§: https://github.com/yarnpkg/yarn/issues/1619#issuecomment-258282647μλ λμ¨ κ² κ°μ΅λλ€)
@dfreeman κ³Ό λμΌν λ¬Έμ κ° νμλκ³ λ²μκ° μΈμλκ³ λ μ§μ€νΈλ¦¬κ° 쿼리λ©λλ€. μ¬λ°λ₯Έ tarball URLκ³Ό ν΄μκ° κ²μλμ§λ§ λ€μ΄λ‘λμ μ¬λ°λ₯Έ Authorization ν€λκ° ν¬ν¨λμ΄ μμ§ μμ μλ΅ λ³Έλ¬Έμ΄ μλ λ€μ΄λ‘λκ° λ°μν©λλ€. κ·Έλ¬λ©΄ Yarnμ ν΄μ λΆμΌμΉλ‘ ν΄κ²°λ©λλ€. μ€λ₯λ νμ λΉ νμΌμ μ€μΈ but got da39a3ee5e6b4b0d3255bfef95601890afd80709
λΆνν©λλ€.
> touch empty
> openssl sha1 empty
SHA1(empty)= da39a3ee5e6b4b0d3255bfef95601890afd80709
νΈμ§: μ΄κ²μ΄ μλ‘μ΄ λ¬Έμ λ‘ μ κΈ°λμ΄μΌ νλμ§ μλ €μ£ΌμΈμ
κΈ°λ³Έμ μΌλ‘ jfrogμ λν΄ μΈμ¦νλ μμ¬λ₯Ό μ»μμ΅λλ€. κ·Έλ¬λ μΆνμ΄ μ€λ¨λ κ² κ°μ΅λλ€.
κ·Έλ₯ λ§νλλ° ββμ₯ν©ν λ‘κ·Έλ λ€λ₯Έ κ²μ΄ μκΈ° λλ¬Έμ μ΄λ»κ² μ§νν΄μΌ ν μ§ μ λͺ¨λ₯΄κ² μ΅λλ€. μ
λ‘λλ‘ μΈν λ€νΈμν¬ νΈλν½μ‘°μ°¨ λ³Ό μ μμμ΅λλ€.
$ yarn publish --access restricted --new-version 2.0.2+1478176271464 .
yarn publish v0.16.1
[1/4] Bumping version...
info Current version: 2.0.2+SNAPSHOT
info New version: 2.0.2+1478176271464
[2/4] Logging in...
[3/4] Publishing...
λκΈλ³΄λ€λ 곡κ°μ μ΄μ©ν΄μ£ΌμΈμ.
λλ μ°λ¦¬κ° μ°¬μ±νκ³ λκΈμ λ¬μ§ λ§μμΌ νλ€λ κ²μ μκ³ μμ§λ§ λ§μ§λ§ λκΈμ κ±°μ 2κ°μμ΄ μ§λ¬κ³ μ°λ¦¬κ° λμΈ μ μλ κ²μ΄ μλμ§ νμ μ΄ μμ§ μμ΅λλ€!
.yarnrc
νμΌμ΄ λ€μμ ν¬ν¨νλ μ¬μ©μ ν΄λ(Macμ κ²½μ°) 루νΈμ μμ
λ μ§μ€νΈλ¦¬ " https://npm.some-internal-site.tld "
μΌλΆ λ΄λΆ ν¨ν€μ§λ₯Ό λ€μ΄λ‘λν μ μμμ΅λλ€. ν° κ²½κ³ λ μ¬μ©μ μ΄λ¦/λΉλ°λ²νΈκ° μλ μ¬μ΄νΈμμ μ‘μΈμ€λ₯Ό μ μ΄νλ€λ κ²μ
λλ€.
λμμ΄ λμκΈ°λ₯Ό λ°λλλ€.
μ΄κ²μ΄ μλνλ κ²μ΄ νμ€ν©λκΉ ... ? λλ λͺ λ¬ λμ λΉκ³΅κ° λ²μ ν¨ν€μ§μ ν¨κ» yarn
λ₯Ό μ¬μ©ν΄ μμ΅λλ€.
@thejameskyle - μ¬μ ν κ°μΈ λ²μ ν¨ν€μ§μ λ¬Έμ κ° μμ΅λκΉ?
@shakefu μ΄ μμ μμ κ°μΈ ν¨ν€μ§μ λν μ μΌν λ¬Έμ λ .npmrc
νμΌμ 맨 μμ registry=https://registry.npmjs.org/
λ₯Ό μΆκ°ν΄μΌ νλ€λ κ²μ
λλ€. npm login
λ ν ν°μ΄μ§λ§ λ€λ₯Έ κ²μ μμ΅λλ€.
μ°λ¦¬λ λν κ°μΈ λ²μ ν¨ν€μ§μ ν¨κ» μμ¬λ₯Ό μ¬μ©νλ©° μ μλν©λλ€. λ΄ .npmrcμ μλ μ μΌν κ²μ prefix=/Users/./npm
λ° //registry.npm.../authToken
λΌμΈμ
λλ€.
npmμ΄ μ΅μ μνμΈμ§ νμΈνκ³ νμΌμ μ§μ°κ³ λ€μ λ‘κ·ΈμΈνμκ² μ΅λκΉ?
μ°λ¦¬ νμ λ λ€λ₯Έ μ¬λμ΄ λ°κ²¬ registry
μ§μλ¬Έ .npmrc
μμ ν κ°μΈμ μΌλ‘ λ²μ ν¨ν€μ§λ₯Ό μ»μ μμλ λ₯λ ₯μ λ§μ³.
@hereandnow λ΄ .npmrc
νμΌμ νλ‘μ νΈμ 루νΈμ μμΌλ©° λ€μμ ν¬ν¨ν©λλ€.
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
μΈκΈνλ―μ΄ λΉκ³΅κ° λ²μ ν¨ν€μ§λ npmκ³Ό λμΌνκ² μλν©λλ€.
μ λ μμ¬ λ²μ μ΄ >= 0.19.1
μ΄κ³ export
NPM_TOKEN
μ΄λκ°μ μλ€κ³ κ°μ ν©λλ€.
λμμ€μ κ³ λ§μ'!
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
κ° μλ .npmrcκ° νλ‘μ νΈμ λμΌν 루νΈμ μλ κ²½μ°μλ§ μλν©λλ€. %LOCALUSER%
ν΄λ(Mac λλ Windows)μ νμ€ μ μ°¨ npm login
μμ±λ κ²½μ°λ μλλλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ 무μμ λκΉ?
@carmelone 맨 μμ registry=https://registry.npmjs.org/
λ₯Ό ν¬ν¨νλλ‘ ν λλ ν 리μ .npmrc
μ μμ νμμμ€.
μλμ, κ°μΈ μ μ₯μλ₯Ό μ¬μ©νκ³ μμ΅λλ€. κ·Έλ¦¬κ³ npmjs μμ λ€μ΄λ‘λν μΌλΆ
@carmelone λλ κ·Έκ²μ΄ μ°λ¦¬μ λ¬Έμ λΌκ³ μκ°ν©λλ€. κ°μΈ λ μ§μ€νΈλ¦¬μ npmjs λ μ§μ€νΈλ¦¬μ μ‘°ν©μ΄ λ¬Έμ μ£ ?
κ°μΈ λ μ§μ€νΈλ¦¬ λ²μλ₯Ό ~/.yarnrc
μΆκ°νλ©΄ κ°μΈ λ μ§μ€νΈλ¦¬μμ μΌλΆ ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λλ€. μΌλΆλ NPMJS λ μ§μ€νΈλ¦¬μμ μ체 μ’
μμ±μ΄ μλ κ²λ€μ
λλ€.
@jakubzitny , μ, κ·Έλ¦¬κ³ npm login
npmμ΄ λ΄ %USERFOLDER%μ μΈμ¦ ν ν°μ΄ μλ .npmrc νμΌμ μ¬λ°λ₯΄κ² μμ±ν λλ λ§μ°¬κ°μ§μ
λλ€. νλ‘μ νΈμ .npmrcμμ ν΄λΉ μΈμ¦μ μνμ§ μμ΅λλ€. λ΄ PCμ μ¬μ©μ μ΄λ¦ ν΄λμλ§ μμ΅λλ€. μ΄κ² λ¬Έμ μΌ. yarnμ ν΄λΉ μΈμ¦ ν ν°μ μΈμνμ§ λͺ»ν©λλ€.
@jakubzitny @carmelone κ·Έλμ λ¬Έμ λ λΉκ³΅κ° λ° κ³΅κ° μ μ₯μμ μ€μ²© μ’ μμ±μ νΌν©νλ κ²μ λκΉ? λλ κ·Έκ²μ΄ νμ¬ μμ¬μμ μλνμ§ μμ κ²μ΄λΌκ³ νμ ν©λλ€. λ€λ₯Έ λ¬Έμ λ₯Ό μ΄μ΄μΌ ν κ² κ°μ΅λλ€.
κ°μΈ λ²μ λͺ¨λ(npm λ μ§μ€νΈλ¦¬μμ)μ΄ μλνλλ‘ νλ €κ³ νκ³ .yarnrcμμ (yarn ꡬμ±μ ν΅ν΄) λ μ§μ€νΈλ¦¬ ꡬμ±μ μ€μ ν΄μΌ νμ΅λλ€.
$ yarn config set registry https://registry.npmjs.org/
λ μ§μ€νΈλ¦¬λ₯Ό μ€μ ν΄μΌ νλ λΆλ€μ μν΄ npm login --scope=@<yourscope>
λ₯Ό μ¬μ©ν΄
μ μ΄λ μ μκ² μλνμ§ μλ κ²μ bintray.com κ°μΈ λ μ§μ€νΈλ¦¬μ λ²μκ° μ§μ λ κ°μΈ ν¨ν€μ§μ λλ€. μ’ μμ± ν΄κ²° μ€μ λ μ§μ€νΈλ¦¬ μΈμ¦μ΄ μλνμ§λ§ bintray.com λ μ§μ€νΈλ¦¬κ° λ°ννλ λ€μ΄λ‘λ λ§ν¬κ° λ€λ₯Έ λλ©μΈμ κ°λ¦¬ν€λ―λ‘ yarnμ΄ λ€μ΄λ‘λν μ¬λ°λ₯Έ μΈμ¦ ν ν°μ 보λ΄μ§ μμ΅λλ€.
@shishkin μ 'npm config set always-auth true'λ‘ μλ https://docs.npmjs.com/misc/config μ°Έμ‘°
@shishkin μ 'npm config set always-auth true'λ‘ μλ https://docs.npmjs.com/misc/config μ°Έμ‘°
@Tapppi λ€, μλνμ΅λλ€. κ°μ μ€λ₯μ λλ€.
λ‘컬 μ»΄ν¨ν°μ μ΅μ λ²μ μ μμ¬( >v0.16
)κ° μ€μΉλμ΄ μλλΌλ λ€λ₯Έ μ¬λμ΄ μ¬μ ν κ°μΈ ν¨ν€μ§λ₯Ό μ€μΉνλ λ° λ¬Έμ κ° μλ κ²½μ°λ₯Ό λλΉνμ¬ μ¬κΈ°μ λ£μ κ²μ΄λΌκ³ μκ°νμ΅λλ€. λ€μκ³Ό κ°μ 404 μ€λ₯κ° νμλ μ μμ΅λλ€.
error An unexpected error occurred: "https://registry.yarnpkg.com/@{ORG}/{PACKAGE}/-/{PACKAGE}-1.0.0.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/Users/{USER}/{project}/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
μ΄κ²μ λλ₯Ό μν΄ μΌνμ΅λλ€. λμμ΄λκΈ°λ₯Ό λ°λλλ€.
npm logout
yarn logout
rm -rf ~/.npmrc
rm -rf ~/.yarnrc
npm login
yarn login
μ€λ yarn add
μ¬μ©νμ¬ κ°μΈ ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λκΉ? μλλ©΄ λ€λ₯Έ μΌμ ν΄μΌ νλμ?
v0.22.0-20170228.1421μ΄ μ€μΉλ Windows 10μμ @vitalboneμ λ¨κ³λ₯Ό μλνμ΅λλ€. μ¬μ ν μ€λ₯κ° λ°μνμΌλ©° μλνλ €λ©΄ .npmrcμμ μΈμ¦ λΌμΈ μ
λ‘κ·Έμμνκ³ λ‘κ·ΈμΈνλ κ²μ κΈ°μ‘΄μ λͺ¨λ ν ν°μ 무ν¨ννκΈ° λλ¬Έμ νμ€ν μ°λ¦¬λ₯Ό μν μ΅μ μ΄ μλλλ€.
@StephanBijzitter λ‘κ·Έμμνκ±°λ λ€μ λ‘κ·ΈμΈν νμκ° μλ€κ³ μκ°ν©λλ€. *rc νμΌμ μ κ±°νλ©΄ λ‘κ·ΈμΈνλ λμ μ΄μ ν ν°μ 무ν¨ννμ§ μκ³ μ ν ν°μ μ»μ μ μμ΅λλ€. κ·Έκ²μ΄ λΉμ μ μν΄ μλνλμ§ νμ€νμ§ μμ΅λλ€.
μ, .npmrc νμΌμ μμ±(λλ μνλ λλ‘ μ μ₯)νλ κ²μ΄ Yarnκ³Ό ν¨κ» λ²μκ° μ§μ λ λΉκ³΅κ° ν¨ν€μ§μμ μλν¨μ νμΈνμ΅λλ€.
<strong i="5">@myprivaterepo</strong>:registry=https://npm.myprivaterepo/
//npm.myprivaterepo/:_authToken=$NPM_TOKEN
μ΄ κ°μΈ ν¨ν€μ§μ μ‘μΈμ€ν λ κΈμ§λ μ€λ₯κ° λ°μνλ―λ‘ .npmrcλ₯Ό μ ννμ§ μλ κ² κ°μ΅λλ€.
λλ μ€λ«λμ μ΄ λ¬Έμ λ‘ κ³ μ¬ν΄ μλ€. μ°λ¦¬λ λ΄λΆμ μΌλ‘ Sonatypeμ μ¬μ©νμ¬ μ체 κ°μΈ NPM 리ν¬μ§ν 리λ₯Ό νΈμ€ν νμ§λ§ YarnμΌλ‘ μ€μΉν μ μμμ§λ§ NPMμ μ μλνμ΅λλ€.
always-auth=true
(https://github.com/craftship/codebox-npm/issues/ 30) .npmrc
νμΌμ μ΅μ
.
νΈμ€ν λ λ μ§μ€νΈλ¦¬λ₯Ό μ»μ μ μμ§λ§ νλ‘μ νΈ μ체λ μμ ν μ€ν μμ€μ΄λ―λ‘ νμμ GitHubλ₯Ό μ¬μ©νκ³ (μΈμ¦μ μ¬μ©νλ―λ‘) AWSλ₯Ό μ¬μ©νλ κ²½μ° μλ²λ¦¬μ€ νλ μμν¬λ₯Ό μ¬μ©νμ¬ λ§€μ° μ½κ² λ°°ν¬ν μ μμ΅λλ€.
κ·Έλ₯ 곡μ ν μκ°μ λλ€.
μ λ Sinopiaμ κ°μ λ¬Έμ λ₯Ό κ²ͺκ³ μμ΅λλ€. λꡬλ μ§ μ΄κ²μ λν ν΄κ²°μ± μ μ°Ύμμ΅λκΉ?
~/.npmrc
.npmrc κ° μλ λͺ¨λ νκ²½μμλ μ λλ‘ μλνμ§ μμ΅λλ€. λ΄ λ‘컬 μ»΄ν¨ν°μμλ μ λλ‘ μλνμ§λ§ Dockerμμ μ€νν λ cwd κ° ~
μ΄ μλ λ ~/.npmrc
κ° νμλμ§ μμ΅λλ€. yarn config list
λͺ
λ Ήμ΄λ‘ νμΈν μ μμ΅λλ€.
λ΄ λ‘컬 μ»΄ν¨ν°μμ λ€μμ μΆλ ₯ν©λλ€.
yarn config v0.23.2
info yarn config
{ 'version-tag-prefix': 'v',
'version-git-tag': true,
'version-git-sign': false,
'version-git-message': 'v%s',
'init-version': '1.0.0',
'init-license': 'MIT',
'save-prefix': '^',
'ignore-scripts': false,
'ignore-optional': false,
registry: 'https://registry.yarnpkg.com',
'strict-ssl': true,
'user-agent': 'yarn/0.23.2 npm/? node/v7.9.0 darwin x64',
lastUpdateCheck: 1492804696073 }
info npm config
{ '//npm.example.com/:_authToken': 'XXXXX-YYYYYY-ZZZZZ',
'<strong i="11">@example</strong>:registry': 'https://npm.example.com/' }
β¨ Done in 0.05s.
Docker λ΄λΆμμ λ€μμ μΆλ ₯ν©λλ€.
root<strong i="15">@a1c3c4fb1fb8</strong>:/app# yarn config list
yarn config v0.23.2
info yarn config
{ 'version-tag-prefix': 'v',
'version-git-tag': true,
'version-git-sign': false,
'version-git-message': 'v%s',
'init-version': '1.0.0',
'init-license': 'MIT',
'save-prefix': '^',
'ignore-scripts': false,
'ignore-optional': false,
registry: 'https://registry.yarnpkg.com',
'strict-ssl': true,
'user-agent': 'yarn/0.23.2 npm/? node/v7.9.0 linux x64',
lastUpdateCheck: 1492856034840,
version: '0.23.2' }
info npm config
{ version: '0.23.2',
loglevel: 'info' }
Done in 0.03s.
λ°λΌμ npm config
μ¬λ°λ₯΄κ² μ€ννμ§ μλ κ² κ°μ΅λλ€.
μ΄μ λν μμ ν΄κ²° λ°©λ²μΌλ‘ Dockerμμ ~/.npmrc
λ₯Ό /app/.npmrc
볡μ¬ν©λλ€.
https://github.com/uber/react-map-gl μμ μ°Ύμ μ μμ΅λλ€.
yarn start v0.23.2
$ (cd examples/custom-interactions && (path-exists node_modules || yarn) && yarn run start-local)
sh: path-exists: command not found
yarn install v0.23.2
[1/4] π Resolving packages...
[2/4] π Fetching packages...
error An unexpected error occurred: "https://unpm.uberinternal.com/flow-remove-types/-/flow-remove-types-1.1.2.tgz: Request failed \"401 Unauthorized\"".
info If you think this is a bug, please open a bug report with the information provided in "/react-map-gl/examples/custom-interactions/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error Command failed with exit code 1.
κ²λ κ°λ κ΅¬μ± μμμλ λμΌν λ¬Έμ κ° μμ΅λλ€.
C:\WorkingFolder\Projects\NG4\wck-management>yarn
μμ¬ μ€μΉ v0.23.4
μ 보 μ κΈ νμΌμ μ°Ύμ μ μμ΅λλ€.
[1/4] ν¨ν€μ§ ν΄κ²° μ€...
[2/4] ν¨ν€μ§λ₯Ό κ°μ Έμ€λ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
μ€λ₯ μκΈ°μΉ μμ μ€λ₯κ° λ°μνμ΅λλ€: " http://registry.npm.telerik.com/@progress%2
fkendo-angular-buttons/-/kendo-angular-buttons-1.0.0.tgz: μμ² μ€ν¨ \"503 S
μλΉμ€λ₯Ό μ¬μ©ν μ μμ΅λλ€\"".
μ 보 μ΄κ²μ΄ λ²κ·ΈλΌκ³ μκ°λλ©΄ μ 보 pκ° ν¬ν¨λ λ²κ·Έ λ³΄κ³ μλ₯Ό μ¬μμμ€.
"C:\WorkingFolder\Projects\NG4\wck-management\yarn-error.log"μ μ 곡λ©λλ€.
info μ΄μ λν λ¬Έμλ₯Ό λ³΄λ €λ©΄ https://yarnpkg.com/en/docs/cli/install μ λ°©λ¬Έ
λͺ λ Ή.
μ§κΈ μμ ν΄μΌ ν©λλ€.
μλνμ§ μλ μ¬μ©μ μ μ μμ κ° μλ κ²½μ° μ λ¬Έμ λ₯Ό μ¬μμμ€.
μ΄ κ²½μ° μ¬νν λ¨κ³λ₯Ό μ 곡νλ κ²μ΄ μ€μν©λλ€.
λ©μ§ @bestander! μλν κ²μΌλ‘ μμλλ μ΅μ μμ¬ λ²μ μ 무μμ λκΉ?
μ¬λ¬ λ²μ μ κ±Έμ³ μμ μ¬νμ΄ μμ΅λλ€.
0.26μ λͺ¨λ κ°μ§κ³ μμ΄μΌν©λλ€
2017λ
5μ 23μΌ νμμΌ 19:44 Alexander Kachkaev μλ¦Ό @github.com
μΌλ€:
λ©μ§ @bestander https://github.com/bestander ! μ΅μ μΌλ§μΌ
μλν κ²μΌλ‘ μμλλ μμ¬ λ²μ ?β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈ
https://github.com/yarnpkg/yarn/issues/521#issuecomment-303492335 λλ μμκ±°
μ€λ λ
https://github.com/notifications/unsubscribe-auth/ACBdWC90PKrW5LAg7HyY3l7c8ZoKaWtyks5r8yb9gaJpZM4KPd0N
.
.npmrc
μ λ²μμ λ μ§μ€νΈλ¦¬κ° μ μλ λΉκ³΅κ° λ²μ ν¨ν€μ§κ° Yarn 0.24.6μμ μλνκΈ° μμνμμ νμΈν μ μμ΅λλ€(Yarn 0.24.5μμλ μλνμ§ μμ). κ°μ¬ν©λλ€!
μμ¬ μ€μΉ
μμ¬ μ€μΉ v0.24.6
μ 보 μ κΈ νμΌμ μ°Ύμ μ μμ΅λλ€.
[1/4] ν¨ν€μ§ ν΄κ²° μ€...
κ²½κ³ cldr-data > cldr-data-downloader > [email protected]: μ΄ ν¨ν€μ§λ npmμ λ€μ ν΅ν©λμμΌλ©° νμ¬ npmκ³Ό κ΄λ ¨νμ¬ μ΅μ λ²μ μ΄ μλλλ€.
κ²½κ³ cldr-data > cldr-data-downloader > μμ² > [email protected] : λμ uuid λͺ¨λ μ¬μ©
[2/4] ν¨ν€μ§λ₯Ό κ°μ Έμ€λ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
κ²½κ³ λ€νΈμν¬ μ°κ²°μ λ¬Έμ κ° μλ κ² κ°μ΅λλ€. μ¬μλ μ€...
μ€λ₯ μκΈ°μΉ μμ μ€λ₯κ° λ°μνμ΅λλ€: " http://registry.npm.telerik.com/@progress%2fkendo-angular-inputs/ -/kendo-angular-inputs-1.0.3.tgz: ESOCKETTIMEDOUT".
μ 보 μ΄κ²μ΄ λ²κ·ΈλΌκ³ μκ°λλ©΄ "[...]\yarn-error.log"μ μ 곡λ μ λ³΄λ‘ λ²κ·Έ λ³΄κ³ μλ₯Ό μ¬μμμ€.
info μ΄ λͺ λ Ήμ λν μ€λͺ μλ₯Ό λ³΄λ €λ©΄ https://yarnpkg.com/en/docs/cli/install μ λ°©λ¬Έ
μμ¬ μ€μΉ v0.24.6
μ 보 μ κΈ νμΌμ μ°Ύμ μ μμ΅λλ€.
[1/4] ν¨ν€μ§ ν΄κ²° μ€...
[2/4] ν¨ν€μ§λ₯Ό κ°μ Έμ€λ μ€...
μ€λ₯ μκΈ°μΉ μμ μ€λ₯κ° λ°μνμ΅λλ€: " http://registry.npm.telerik.com/@progress%2fkendo-angular-l10n/ -/kendo-angular-l10n-1.0.0.tgz: ETIMEDOUT 23.253.4.114:80 μ°κ²°" .
μ 보 μ΄κ²μ΄ λ²κ·ΈλΌκ³ μκ°λλ©΄ μ 보 pκ° ν¬ν¨λ λ²κ·Έ λ³΄κ³ μλ₯Ό μ¬μμμ€.
"....\yarn-error.log"μ μ 곡λ©λλ€.
info μ΄μ λν λ¬Έμλ₯Ό λ³΄λ €λ©΄ https://yarnpkg.com/en/docs/cli/install μ λ°©λ¬Έ
λͺ
λ Ή.
telerik.comμ μ°κ²°ν μ μλ κ² κ°μ΅λλ€. http νλ‘μκ° κ΅¬μ±λμ΄ μμ΅λκΉ?
λ¬Έμ λ strict-sslμ μ¬μ©νμ¬ μμ¬λ₯Ό trueλ‘ κ΅¬μ±νμ λ http://registry.npm.telerik.com μμ μμ¬κ° κ²μλλ€λ κ²μ λλ€.
μ 보 μμ¬ κ΅¬μ±
{ 'λ²μ νκ·Έ μ λμ¬': 'v',
'λ²μ μμ νκ·Έ': μ°Έ,
'λ²μ -git-sign': κ±°μ§,
'λ²μ -git-message': 'v%s',
'μ΄κΈ°ν λ²μ ': '1.0.0',
'μ΄κΈ° λΌμ΄μ μ€': 'MIT',
'μ λμ¬ μ μ₯': '^',
'μ€ν¬λ¦½νΈ 무μ': false,
'무μ μ΅μ
': false,
λ μ§μ€νΈλ¦¬: ' https://registry.yarnpkg.com ',
'strict-ssl': μ¬μ€,
'μ¬μ©μ μμ΄μ νΈ': 'yarn/0.24.6 npm/? λ
Έλ/v6.9.5 win32 x64',
lastUpdateCheck: 1496137030541 }
μ 보 npm ꡬμ±
{ 'strict-ssl': μ¬μ€,
'@ μ§ν: λ μ§μ€νΈλ¦¬ ': ' https://registry.npm.telerik.com/ ',
'//registry.npm.telerik.com/:_authToken': '......' }
0.04μ΄ μμ μλ£λ©λλ€.
μ΄μ μ npmμΌλ‘ λ‘κ·ΈμΈμ ꡬμ±νμ΅λλ€. "npm login --registry= https://registry.npm.telerik.com/ --scope=@progress "
μμ¬λ "https"(https://registry.npm.telerik.com)λ‘ κ²μν΄μΌ ν©λλ€ :-)
λ¬Έμ κ° λμ§ μμΈμ?
κ°μΈ λ μ§μ€νΈλ¦¬λ₯Ό μ¬μ©ν κ²½νμ΄ λ§μ§ μμ΅λλ€.
λκ΅°κ° λλ₯Ό μν΄ κ³μ κ³Ό νλ‘μ νΈ package.json/yarn.lockμ μ€μ νλ©΄
λ΄κ° λμΈ μ μλμ§ ν
μ€νΈνκΈ° μν΄.
2017λ 5μ 30μΌ 10μ 53λΆμ beatrizaldaz [email protected]μμ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
λ¬Έμ λ μμ¬κ° http://registry.npm.telerik.com μμ κ²μλκ³ μλ€λ κ²μ λλ€.
strict-sslμ μ¬μ©νμ¬ μμ¬λ₯Ό trueλ‘ κ΅¬μ±ν κ²½μ°:μ 보 μμ¬ κ΅¬μ±
{ 'λ²μ νκ·Έ μ λμ¬': 'v',
'λ²μ μμ νκ·Έ': μ°Έ,
'λ²μ -git-sign': κ±°μ§,
'λ²μ -git-message': 'v%s',
'μ΄κΈ°ν λ²μ ': '1.0.0',
'μ΄κΈ° λΌμ΄μ μ€': 'MIT',
'μ λμ¬ μ μ₯': '^',
'μ€ν¬λ¦½νΈ 무μ': false,
'무μ μ΅μ ': false,
λ μ§μ€νΈλ¦¬: ' https://registry.yarnpkg.com ',
'strict-ssl': μ¬μ€,
'μ¬μ©μ μμ΄μ νΈ': 'yarn/0.24.6 npm/? λ Έλ/v6.9.5 win32 x64',
lastUpdateCheck: 1496137030541 }
μ 보 npm ꡬμ±
{ 'strict-ssl': μ¬μ€,
' @progress https://github.com/progress :registry': '
https://registry.npm.telerik.com/ ',
'//registry.npm.telerik.com/:_authToken': '......' }
0.04μ΄ μμ μλ£λ©λλ€.μ΄μ μ npmμΌλ‘ λ‘κ·ΈμΈμ ꡬμ±νμ΅λλ€. "npm login --registry=
https://registry.npm.telerik.com/ --scope=@progress
https://github.com/progress ""https"(
https://registry.npm.telerik.com) :-)λ¬Έμ κ° λμ§ μμΈμ?
β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈ
https://github.com/yarnpkg/yarn/issues/521#issuecomment-304830178 λλ μμκ±°
μ€λ λ
https://github.com/notifications/unsubscribe-auth/ACBdWA3GrsEnpn64ppJRL2cvJ-ayhvh5ks5r--cFgaJpZM4KPd0N
.
μκ² μ΅λλ€. λ¬Έμ λ₯Ό ν μ€νΈνκΈ° μν΄ telerik νκ°ν κ³μ μΌλ‘ νλ‘μ νΈλ₯Ό λ§λ€κ³ githubμμ νλ‘μ νΈ λ§ν¬λ₯Ό 보λ΄λλ¦¬κ² μ΅λλ€.
λλ¨νκ΅°μ, @beatrizaldaz.
κ·Έ κ²½μ°μλ§ μ λ¬Έμ λ₯Ό μ΄ ββμ μμ΅λκΉ?
λΆλ¦¬νμ¬ μΆμ νλ κ²μ΄ λ μ¬μΈ κ²μ
λλ€.
@beatrizaldaz κ²μλ¬Ό μ 보 / Telerik. κ°μ λ¬Έμ κ° μμ΅λλ€. μΈλΆμ μΌλ‘ λλ λͺ κ°μ§ μλλ₯Ό νλ€
λ€μ ꡬμ±(.npmrc)μ μ¬μ©ν©λλ€. κ±°μ μλνλ κ² κ°μ§λ§ https λμ httpλ‘ μ°κ²°λ©λλ€.
κ·Έλμ κ±°λΆλ©λλ€. μ΄μ λν μμ ν΄κ²° λ°©λ²μ΄ μμ΅λκΉ(μ격 λͺ¨λλ μλνμ§ μμ)?
<strong i="9">@progress</strong>:registry=https://registry.npm.telerik.com/
//registry.npm.telerik.com/:_authToken="YOUR_SECRET_HERE"
always-auth=true
registry="https://registry.npmjs.com/"
κ·Έλμ λλ μ΄μ μ΄κ²μ λ§λ¬μ΅λλ€( yarn
λ 0.24.6μ μμμ΅λλ€). νλμ μ μλνκΈ° λλ¬Έμ μ νν μμΈμ΄ 무μμΈμ§ λͺ¨λ₯΄κ² μ΅λλ€. λ΄ μ루μ
μ λͺ¨λ μ κ±°νλ κ²μ΄ μμ΅λλ€ .npm
ν΄λμ .npmrc
μ€ν, λͺ¨λ νμΌμ yarn cache clean
λ€μ λ‘κ·ΈμΈμ npm login
μ ν ν μ μλμ λνλ κ². λλ μ΅κ·Όμ nvm
λ₯Ό ν΅ν΄ nodeμ npmμ λ²μ μ¬μ΄λ₯Ό λ°μ΄λ€λ
μ΅λλ€. λ²μΈμ? λν λ¬Έμ ν΄κ²° μ€ μ΄λ μμ μμ --ignore-dependencies
νλκ·Έλ₯Ό μ¬μ©νμ¬ brew
μ¬μ©νμ¬ yarn
λ₯Ό μ κ±°νλ€κ° λ€μ μ€μΉνμ§λ§ κ·Έ μ체λ‘λ λ¬Έμ κ° ν΄κ²°λμ§ μμμ΅λλ€.
κ΄λ ¨μ΄ μλ κ²½μ° μ΄ λ¨κ³λ₯Ό μ§ννλ λμ yarn login
μλνλ©΄ μ΄λ€ μ΄μ λ‘ μνΈ ν둬ννΈκ° μ€λ¨λ μ μμ΅λλ€. μ΄κ²μ΄ μ κ° npm login
μ΄μ μ
λλ€.
μλ
νμΈμ,
λͺ λ¬μ΄ μ§λ¬μ΅λλ€. μμμ΄ μμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
λκΈλ³΄λ€λ 곡κ°μ μ΄μ©ν΄μ£ΌμΈμ.