Come posso aggiornare npm su Windows?


601

Ho provato questo :

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

... ma non ha funzionato.

Come posso farlo su Windows?


3
La normale procedura per l'aggiornamento del software che non dispone di autoupdater integrati è quella di scaricare e installare la versione più recente. Ci hai provato?
JJJ,

9
@Juhana Stavo pensando che forse c'era un modo per farlo tramite npm come menzionato in quel link.
Jatin,

1
Puoi farlo con Chocolatey. Vedi la mia risposta qui per maggiori informazioni: stackoverflow.com/a/19915418/373655
rob

6
Quindi, come stai usando sudo su Windows? superuser.com/questions/42537/…
Aran Mulholland,

3
sudonon funziona su Windows ...
Blairg23

Risposte:


2019

Questo è il nuovo modo migliore per aggiornare npm su Windows .

Esegui PowerShell come amministratore

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade

Nota: non eseguire npm i -g npm. Invece, usa npm-windows-upgradeper aggiornare npm andando avanti. Inoltre, se si esegue il programma di installazione di NodeJS, sostituirà la versione del nodo.

  • Aggiorna npm sul posto, dove il nodo lo ha installato.
  • Facile aggiornamento, aggiornamento al più recente eseguendo npm-windows-upgrade -p -v latest.
  • Non modifica il percorso predefinito.
  • Non cambia il percorso del pacchetto globale predefinito.
  • Consente facili upgrade e downgrade.
  • Raccomandato ufficialmente dal team NPM .
  • Un elenco di versioni abbinate tra NPM e NODE ( https://nodejs.org/en/download/releases/ ) - ma dovrai scaricare NODE INSTALLER ed eseguirlo per aggiornare il nodo ( https://nodejs.org/en / )

9
Stavo avendo problemi a far aggiornare il mio, questo script ha funzionato perfettamente. Grazie.
atom0s

8
Microsoft consiglia di utilizzarlo nel repository nodejs-guidlines su github . Suggerisce inoltre strumenti per la gestione delle versioni dei nodi.
Christopher Currens,

9
Questo ha funzionato benissimo per npm. ho pensato di menzionare, poiché la domanda in sé è per l'aggiornamento di node e npm, che per ottenere entrambi gli aggiornamenti ho dovuto disinstallare / reinstallare il nodo ed eseguire anche questo upgrade (non sono sicuro che l'installer del nodo lo avrebbe fatto da solo come me ha fatto prima l'upgrade)
edencorbin

125
e che dire del nodo stesso?
jenson-button-event,

26
Ho seguito le istruzioni, ma quando eseguo "npm-windows-upgrade" ottengo il seguente errore:npm-windows-upgrade : The term 'npm-windows-upgrade' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Ben Carp

612

Scarica ed esegui l'ultimo MSI. L'MSI aggiornerà il nodo e l'npm installati.


25
Nota MSI a 32 e 64 bit. Non fare semplicemente clic sul collegamento "Windows Installer", ovvero a 32 bit. Controlla dove risiedono i tuoi attuali nodejs, in "Programmi" o su "Programmi (x86)". "X86" significa 32 bit. Vedere i commenti seguenti su "la versione precedente è stata installata in una directory diversa".
tivnet,

49
A partire da ora (novembre 2014) questo ti porterà l'ultimo nodo (0.10.33) ma non l'ultimo npm - otterrai npm 1.4.28. Per aggiornare a un moderno (2.xx) npm su Windows, segui le istruzioni qui: github.com/npm/npm/wiki/Tro
Sam Mikes

1
Il programma di installazione del nodo contiene l'ultima versione di npm che era disponibile al momento del rilascio del nodo. (sul ramo 1.x)
josh3736,

2
Consiglio di disinstallare prima la versione del nodo corrente da "Programmi e funzionalità" ...
wayofthefuture

3
(Febbraio 2018; deve essere diventato più facile!) Lavoro con Node e npm da un paio d'anni. Ottengo il nodo msi da nodejs.org. Ogni msi che ho usato è stato aggiornato da una versione precedente del nodo senza lamentele o preavviso. I recenti msi del nodo hanno incluso un npm, sebbene a volte un vecchio npm. docs.npmjs.com/tro troubleshooting/… dice che npm install -g npmfunziona. L'ho fatto; Non ho avuto difficoltà. Molto recentemente, ho aggiornato Node e ho anche ottenuto l'attuale npm.
BaldEagle,

121

Per aggiornare NPM, questo ha funzionato per me:

  • Passare nella shell alla directory di installazione del nodo, ad es C:\Program Files (x86)\nodejs
  • corsa npm install npm(nessuna -gopzione)

7
Questo è in realtà uno degli approcci consigliati su Windows: github.com/npm/npm/wiki/Tro troubleshooting#upgrading
granata

3
Questo ha funzionato per me dopo aver aggiornato il nodo tramite la risposta accettata.
Jamie Hutber

2
@ singe3 Il prompt dei comandi deve essere elevato (avviato come amministratore) per poter modificare C: \ Programmi. Non mi piace molto questo metodo perché "npm install -g" proverà ad installare in Programmi, quindi il prompt cmd deve sempre essere eseguito per installare altri pacchetti globali. L'opzione 2 nel link di granata è migliore IMHO: elimina Program Files \ nodejs \ npm.cmd in modo che utilizzi l'npm locale dell'utente.
pmont

21
Avevo bisogno di usarenpm install npm@latest
TryingToImprove il

1
@ TryingToImprove È necessario disinstallare il nodo, eliminare i file di programma \ node e% appdata% \ node. Reinstallare nodo. Quindi usa npm-windows-upgrade (vedi la mia risposta). npm-windows-upgrade è la soluzione migliore e non ha le insidie ​​come le altre risposte qui. Il problema che hai ora sono le versioni 2 npm sul tuo sistema e, a seconda del file npmrc, potresti avere più pacchetti globali e incongruenze. Come aggiornare un pacchetto globale ma ottenere ancora la vecchia versione ...
Robert Baker

70

Come alcune persone, avevo bisogno di combinare più risposte e dovevo anche impostare un proxy.

Questo dovrebbe funzionare per chiunque. Non ho alcun desiderio di eseguire un file EXE o MSI .. disinstallare / reinstallare o eliminare manualmente file e cartelle. È così 1999: P

  1. Esegui questo per aggiornare NPM:

    Esegui PowerShell come amministratore

    npm i -g npm    // This works

    Sto non pensando che questo codice aggiorna in realtà la versione NPM di seguito

    Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
    npm install -g npm-windows-upgrade
    npm-windows-upgrade
    
    (courtesy of "Robert" answer)

Esegui questo per aggiornare Node.js:

wget https://nodejs.org/download/release/latest/win-x64/node.exe -OutFile 'C:\Program Files (x86)\nodejs\node.exe'    (courtesy of BrunoLM answer)

Se ottieni `wget: Impossibile trovare una parte del percorso ...." **, vedi sotto ... scorri verso il basso. Lettura della risposta web ... È almeno il punzonatura attraverso il firewall / proxy (se ne hai uno o hai già eseguito il codice ottenere attraverso ...

Altrimenti

Potrebbe essere necessario impostare il proxy

npm config set proxy "http://proxy.yourcorp.com:811"    (yes, use quotes)

2 possibili errori

  1. Impossibile trovare il percorso della soluzione del percorso "where.exe node" (per gentile concessione di Lonnie Best Answer)

    Ad esempio, se Node.js NON vive in "Programmi (x86)", forse con where.exe, vive in "C: \ Programmi \ nodejs \ node.exe".

    wget https://nodejs.org/download/release/latest/win-x64/node.exe -OutFile 'C:\Program Files\nodejs\node.exe'
  2. Ora forse tenta di eseguire l'aggiornamento ma viene visualizzato un altro errore, "node.exe viene utilizzato da un altro processo".

    • Chiudi / spegni le altre console .. prompt dei comandi e finestre di PowerShell, ecc. Anche se stai usando npm in un prompt dei comandi, chiudilo.

npm -v (3.10.8)

nodo -v (v6.6.0)

FATTO. Sono alla versione che voglio .


1
Il mio nodo è inc:\Program Files\nodejs
malix il

1
Questa è l'unica risposta che potrebbe ancora funzionare (altre sembrano piuttosto vecchie e deprecate) e grazie a dio funziona.
omer.ersoy,

Dopo aver eliminato la versione precedente dell'istanza nodejs (come da file di programma, dati utente ecc.). Mi stava dando errore come una versione precedente di nodejs è già installata quando stavo cercando di installare la versione 8.x di nodejs. Ha risolto il mio problema.
Nessuno

58

Puoi usare Chocolatey che è un gestore di pacchetti per Windows (come apt-get per Debian Linux).

Installa nuovo (potrebbe essere necessario disinstallare le versioni precedentemente installate)

> choco install nodejs

Aggiornamento all'ultima versione

> choco update nodejs

e per npm

> choco update npm

7
choco update npmè deprecato. Utilizzare npm-windows-upgradeper aggiornare npm. github.com/felixrieseberg/npm-windows-upgrade
Robert Baker

2
Il comando di aggiornamento di @Robert choco è obsoleto ma possiamo ancora utilizzare il comando di aggiornamento di choco
Aqib,

2
@Aqib il pacchetto npm è deprecato in cioccolatoso. Vedi chocolatey.org/packages/npm
Robert Baker

3
Seguì questo consiglio e Chocolatey installò una versione incredibilmente vecchia di npm che sostituì la mia versione leggermente vecchia, causando cose molto brutte.
uglycoyote,

49

Puoi aggiornare il tuo npm all'ultima versione stabile con il seguente comando:

 npm install npm@latest -g

Usa PowerShell per eseguirlo. Questo comando non richiede i privilegi di amministratore di Windows e puoi verificare il risultato connpm -v


5
Risposta più semplice e migliore per l'aggiornamento di npm
nathanchere

1
Se hai installato nodejs , ci sono due versioni di npm installate su Windows. In esecuzione npm install npm@latest -gaggiorna solo quello globale ( -g) installato (% appdata% \ npm \). Per aggiornare npm fornito con nodejs (% ProgramFiles% \ nodejs \ node_modules \ npm) puoi scaricare il programma di installazione .msi da nodejs.org/en ed eseguirlo. Altri metodi ufficiali per aggiornare npm: github.com/npm/npm/wiki/Tro
troubleshooting#upgrading

1
Ha funzionato per me. Grazie :)
mudrak patel

Ha funzionato per me :)
Mayank Pandeyz il

Questa sembra la risposta migliore per la sua semplicità.
Mike Poole,

24

Le risposte precedenti funzioneranno installando una nuova versione di Node.js (probabilmente l'opzione migliore), ma se si ha una dipendenza da una versione specifica di Node.js, allora funzionerà: "npm install npm -g". Verificare eseguendo npm -v prima e dopo il comando.

Inserisci qui la descrizione dell'immagine


Certo che lo fa @BrianDiPalma. Aggiunta schermata per mostrare l'aggiornamento dal 2.14.12 al 3.8.2
Will Lopez,

22

Questo funziona bene per me aggiornare npm su Windows 7 x64:

  • Avvio di Windows
  • Tutti i programmi
  • Node.js
  • Prompt dei comandi Node.js (clic alternativo)
  • Eseguire come amministratore

    $ npm -g install npm

  • rimuovere C:\Program Files\nodejs\npm.cmdil nuovo npm sarà aC:\Users\username\appdata\roaming\npm\npm.cmd

Spero che sia di aiuto.


2
Questa soluzione modifica la directory nodejs, lasciando un npm orfano. Se hai più di 1 utente sulla macchina, hai appena rotto NPM per tutti gli altri. Questo metodo causa anche problemi con i pacchetti globali. npm installato tramite questa risposta non ha il file npmrc, quindi i pacchetti globali in futuro verranno probabilmente installati nella directory sbagliata. Se si aggiorna il nodo, il nodojs / npm.cmd è ora ripristinato. Quindi, se nodejs aggiorna npm, sei bloccato su quello vecchio a meno che non esegui di nuovo quel comando.
Robert Baker,

17

Apri PowerShell come amministratore.

Per la prima installazione è possibile utilizzare questo piccolo script per scaricare l'ultimo msied eseguirlo

$nodeLatest=((curl https://nodejs.org/download/release/latest/).Content | findstr x64.msi) -replace "<(.*?)>", "" -replace "\s+.+", "";
wget "https://nodejs.org/download/release/latest/$nodeLatest" -OutFile (join-path $env:TEMP node.msi); Start-Process (join-path $env:TEMP node.msi)

Su futuri aggiornamenti è possibile scaricare solo node.exee aggiornare npm con

wget https://nodejs.org/download/release/latest/win-x64/node.exe -OutFile 'C:\Program Files\nodejs\node.exe'
npm i -g npm

Ora dovresti avere l'ultimo nodo e npm.


Sono andato un po 'oltre e ho deciso di implementare un nvmper Windows.

https://github.com/brunolm/nvm

Install-Module -Name power-nvm

nvm install latest
nvm default latest

Risposta eccellente. Molti userebbero ovviamente C:\Program Files\nodejs\node.exeper l'ultima parte.
Arviman,

13

Usa Aggiorna npm su Windows

Questo è il documento ufficiale per un utente di aggiornare npm su Windows!

Ecco il mio screenshot!

Inserisci qui la descrizione dell'immagine


msi è anche un'altra scelta!
xgqfrms,

Dalla pagina collegata a: "Questo è un piccolo strumento creato dagli ingegneri di Microsoft DX". Quindi dire "questo è il documento ufficiale" è forse un po 'fuorviante. Sembra che tu stia dicendo che è ufficiale dal nodo o gente npm.
jinglesthula,

13

1. Installazione dell'ultima versione di npm

npm install g npm@latest 

(Puoi digitare "npm –version" per verificare che)


2. Installazione del nodo

un. Installare la nuova versione del nodo tramite il seguente URL: https://nodejs.org/en/download/current/ Seguire le opzioni predefinite
b. Rimuovere C: \ Users \\ AppData \ Roaming \ NPM
c. Rimuovere C: \ Users \\ AppData \ Roaming \ npm-cache


opzionalmente:

d. (Elimina la cartella node_modules nella cartella del progetto corrente)
e. verifica cache npm
f. npm install


Questo ha funzionato per me .. Potrebbe essere necessario utilizzare npm rebuild node-sass - force dopo aver terminato l'installazione perché l'ambiente è cambiato
Abx

9

Come aggiornare Node.js:

  1. Disinstallare Node.js. Fai clic sul menu Start, digita "Modifica o rimuovi un programma", fai clic sull'elemento visualizzato, trova Node.js nell'elenco e disinstallalo.

  2. Elimina le directory, sia C:\Program Files (x86)\nodejs\e C:\Program Files\nodejs\se esistono.

  3. Installa l'ultima, https://nodejs.org/en/download

    La disinstallazione / eliminazione / installazione non sembra necessaria, ma spesso lo è e questo ti farà risparmiare tempo. Queste istruzioni provengono da Microsoft.

Come aggiornare NPM:

    https://www.npmjs.com/package/npm-windows-upgrade

    Questa è la documentazione ufficiale per l'aggiornamento di npm su Windows.

Tutto è stato testato e funzionante su Windows 10 (2017).


9

Per quello che vale, ho dovuto combinare diverse risposte ...

  1. Disinstallare Node.js nel pannello di controllo Aggiungi / rimuovi programmi .
  2. Elimina le directory, sia C:\Program Files (x86)\nodejs\e C:\Program Files\nodejs\se esistono.
  3. Installa l'ultima versione, http://nodejs.org/download/

Riesci a ricordare qualcosa di specifico perché hai dovuto farlo? L'ho appena provato con il download, l'installazione e ha funzionato all'istante.
amenthes,

No, ma penso che la versione precedente del nodo lo abbia installato in una diversa directory di Windows nel percorso. Almeno questo è il mio presupposto
Tim

7

questo è lo strumento migliore per mantenere la versione di NODE.Js i NVM

Node Version Manager (nvm) per Windows ma per Windows, con un programma di installazione. Scarica ora ! Questo è sempre stato un gestore versione nodo, non un gestore io.js, quindi non esiste un supporto posteriore per io.js. Tuttavia, il nodo 4+ è supportato. inserisci qui la descrizione dell'immagine


1
La risposta più potente e conveniente qui? VALUTA questo, gente! Se siete d'accordo.
Jared Thirsk,

5

Per me, dopo aver disinstallato completamente il nodo. 10.29, e quindi l'installazione del nodo 4.2.2, è rimasto un file 10.29 node.exe nella mia cartella c: \ windows.

Ho trovato questo usando il seguente comando:

where.exe node

Il comando ha restituito:

C:\Windows\node.exe
C:\Program Files\nodejs\node.exe

Quindi, anche se avevo installato con successo la versione 4.2.2 tramite l'eseguibile msi, il comando "node -v" avrebbe continuato a restituire 10.29.

Ho risolto questo eliminando questo file:

C:\Windows\node.exe

5

Ok ragazzi, ho letto (provato su Windows) tutte le cose precedenti e tutte queste risposte hanno i loro svantaggi.

Per il modo migliore per aggiornare Node.js (almeno per me), vai su https://nodejs.org/en/ Quindi scarica l'ultima versione e installala nella stessa cartella in cui hai installato la versione precedente in - 1 min ed è fatto. Non è necessario rimuovere alcun vecchio file.

Quindi aggiorna npm digitando cmd:npm install --save latest-version


1
Forse durante il tentativo di altre soluzioni ho accidentalmente aggiornato npm. Per aggiornarlo digita cmd: npm install --save ultima versione
Vasyl Gutnyk

1
A volte mi chiedo ancora PERCHÉ utilizzo Windows. Grazie per la tua semplice soluzione.
Yuri Ramos,

4

Ho seguito @ josh3737 e ho installato l'ultimo MSI dalla homepage di node.js.

Ma ho avuto l'ulteriore problema di avere ancora il vecchio nodo e npm sulla riga di comando. Il problema è stato causato dalla nuova installazione in cui è stata installata

C:\Program Files (x86)\nodejs\

invece dell'installazione precedente in

C:\Program Files\nodejs\

La nuova installazione ha aggiunto la nuova directory nella mia variabile path dopo quella vecchia. Quindi la vecchia installazione era ancora quella attiva nel percorso. Dopo aver rimosso C:\Program Files\nodejs\dal percorso di sistema e C:\Users\...\AppData\Roaming\npmdal percorso dell'utente e riavviato la riga di comando, la nuova installazione era attiva.

Forse il percorso minimo era un problema locale che non ha nulla a che fare con la nuova installazione, in cui avevo due collegamenti AppData\Roaming\npm. E forse questo può anche essere risolto disinstallando prima node.js e installando la nuova versione in seguito.


4

Questo funziona bene per me

  1. Esegui il prompt dei comandi come amministratore

  2. Passare alla cartella contenente nodejs (ad es. C: \ Programmi \ nodejs)
  3. Esegui Powershell -ExecutionPolicy Unrestricted

  4. Esegui npm-windows-upgrade

  5. Questo mostrerà l'elenco delle versioni disponibili per l'installazione. Basta selezionare la versione desiderata spostando il tasto su / giù e premere Invio.

    Questo aggiornerà il tuo npm
  6. Per verificare la versione corrente di npm

    Esegui npm --version

Schermata del prompt dei comandi


4

Stavo anche affrontando problemi simili. Ho seguito i passaggi indicati di seguito e ha funzionato per me:

  • vai a Windows > Start > Node.js

    • fare clic destro su Node.js command prompt
    • clicca su Run as administrator
  • ping registry.npmjs.org

  • npm view npm version

  • cd %ProgramFiles%\nodejs

  • npm install npm@latest

e npm aggiornati con successo. Prima stavo provando per CMD e questo stava generando un errore. potrebbe essere un problema relativo al percorso che è stato risolto eseguendo il prompt dei comandi di NodeJs. spero che funzionerà per te. prova questo.



4

Il modo più semplice che ho trovato finora per aggiornare Node.js è usare Chocolatey . Utilizzare Chocolatey per installare o aggiornare l'ultima versione di Node.js su Windows:

Passaggio 1: Innanzitutto, assicurati di aver già installato Chocolatey. In caso contrario, utilizzare una shell amministrativa per installare chocolatey tramite cmd.exe o PowerShell.exe. Per ulteriori informazioni, visitare: https://chocolatey.org/docs/installation

Passaggio 2: installare con cmd.exe . Esegui il seguente comando:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Per installare con PowerShell.exe , visitare: https://chocolatey.org/docs/installation

Passaggio 3: Installa o aggiorna con i seguenti comandi su cmd.exe (in modalità amministrativa)

Per installare Node.js :cinst nodejs.install

Per aggiornare Node.js :cup nodejs.install


4

seguire questi passaggi per la finestra 10 o la finestra 8

  • premi WIN + R e digita cmd e invio
  • npm i -g npm@next
  • npm i -g npm@next O npm i -g node@{version}
  • Rimuovere il percorso di ambiente C:\Program Files\nodejsdalla variabile di ambiente PATH.
  • digitare refreshenvcmd

Ora avrai la tua nuova versione che hai installato.

Nota : se non si rimuove il percorso. Vedrai la versione precedente del nodo.


3

Per NodeJS

Scarica la versione del nodo richiesta msi da qui e installala

per Npm

Esegui PowerShell come amministratore

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade

2

Powershell non esegue npm direttamente, suggerisco di usare

.\npm install -g npm-windows-upgrade
.\npm-windows-upgrade

e fallì con:

Volevi installare npm 6.1.0, ma la versione installata è 3.10.10.

Un motivo comune è un tentativo di "npm install npm" o "npm upgrade npm". Ad oggi, l'unica soluzione è disinstallare completamente e quindi reinstallare Node.js. Per un piccolo tutorial, consultare http://aka.ms/fix-npm-upgrade .

Ti preghiamo di considerare di segnalare il tuo problema a http://aka.ms/npm-issues .

http://aka.ms/fix-npm-upgrade <- questo è un link non funzionante


1

Puoi usare questi comandi:

npm cache clean
npm update -g [package....]

Se si sta eseguendo l'aggiornamento da una versione precedente del nodo, sarà necessario aggiornare tutti i pacchetti globali esistenti. È inoltre possibile specificare il nome del pacchetto da aggiornare.


1

Questo potrebbe aiutare qualcuno. Né "npm-windows-upgrade" né il solo programma di installazione lo hanno fatto per me. Powershell utilizzava ancora una versione precedente di node e npm.

Quindi questo è quello che ho fatto (ha funzionato per me): 1. Scarica l'ultimo installer da nodejs.org. Installa nodo. Aggiornerà il tuo nodo; ovunque (Powershell, cmd ecc.). 2. Installare il pacchetto npm-windows-upgrade (npm install -g npm-windows-upgrade) ed eseguire npm-windows-upgrade.

Non ho disinstallato nulla e non ho impostato alcun percorso.


1
"Powershell utilizzava ancora una versione precedente di node e npm." Probabilmente hai fatto qualche altro metodo di aggiornamento in passato modificando il percorso o eseguendo npm i -g npm. In caso di problemi in futuro, è necessario eseguire questa operazione: github.com/felixrieseberg/…
Robert Baker,

1

Nel mio caso, ho scoperto che avevo installato due copie di Node.js. Uno in "C: \ Programmi \ nodejs" e un altro in "C: \ Programmi (x86) \ nodejs".


0

Questo è ciò che ha funzionato per me.

  1. Aprire una cartella locale diversa da quella in cui è installato nodejs.
  2. Installa npm in quella cartella con il comando npm install npm
  3. Passare alla cartella contenente il nodo js. (C: \ Programmi \ nodejs \ node_modules)
  4. Eliminare la cartella npm e sostituirla con le cartelle npm e bin nella cartella locale.
  5. Corri npm -v. Ora otterrai la versione aggiornata per npm.

Nota: ho provato a installare npm direttamente in "C: \ Programmi \ nodejs \ node_modules" ma ha creato errori.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.