Como excluir o diretório node_modules da sincronização do OneDrive?

0

Sou desenvolvedor de front-end e mantenho meus projetos de front-end no OneDrive. Devido a como o Node.js organiza as dependências, cada projeto tem um diretório node_modules com dezenas de megabytes de arquivos minúsculos que demoram uma eternidade para serem sincronizados.

O que posso fazer para evitar a sincronização dos diretórios node_modules , mantendo os projetos no OneDrive?

    
por Ivan Akulov 01.11.2017 / 16:47

3 respostas

3

Antecedentes

O OneDrive não permite excluir diretórios por nome, e isso é algo que não será alterado em breve :

[OneDrive’s representative response on a UserVoice request:] Not right now

Algumas pessoas recomendam que desmarque os diretórios que você não deseja sincronizar nas configurações do OneDrive, mas isso se tornou impossível com .

Sobre o OneDrive-Files-On-Demand-0e6860d3-d9f3-4971-b321-7092438fb38e "> Arquivos do OneDrive por demanda .

Solução

No entanto, você pode resolver isso ajustando as coisas no lado do Node.js. Torne o diretório node_modules um link simbólico arquivo para um lugar diferente:

# Open any place outside OneDrive
cd D:\node_dependencies
# Make a symlink target. After linking, node_modules for your project 
# will be installed here
mkdir node_modules_for_my_project

# Open the project directory
cd <the project directory>
# Make a *file* link from node_modules to the newly created directory.
# You will need to delete existing node_modules directory if it exists
cmd /C "mklink node_modules D:\node_dependencies\node_modules_for_my_project"

A parte importante aqui é que você cria um link simbólico arquivo , não um diretório . O OneDrive não reconhecerá nem sincronizará esse link simbólico, enquanto o Node.js funcionará como esperado:

TestadocomoOneDrivev17.3.7101.1018earquivosOneDrivesobdemandaativados.

Desvantagens

Estanãoéumasoluçãouniversal.UmadesvantagemdissoéqueoExplorer,oPowershelleoutrasferramentasnãoreconhecemnode_modulescomoumdiretório:

Noentanto,oseditoresdecódigobaseadosnoNode.jsirãolê-lobem:

    
por 01.11.2017 / 16:47
1

Para usuários de Typescript disponíveis, adicione node_modules ao seu caminho para evitar problemas de resolução de módulo.

Em tsconfig.json, adicione:

"paths": {
  [... some paths ...],
  "*": [
    "node_modules/*"
  ]
}

Editar : ainda tem alguns problemas. Eu posso construir o projeto, mas ts-node e nodemon disparam Cannot find module erros. Bem, isso ainda é um problema: (

    
por 05.12.2017 / 15:15
1

Eu sei que esta é uma pergunta mais antiga, mas me deparei com o mesmo problema. A solução que me deparei foi primeiro criar uma pasta node_modules vazia e depois sincronizá-la com a nuvem.

Quando a pasta vazia foi sincronizada, fui para

OneDrive settings → Choose folders

e desmarque a pasta node_modules .

Em seguida, quando você executar npm install na pasta raiz do projeto, o OneDrive detectará um conflito com o conteúdo da pasta na nuvem. Não será sincronizado.

A desvantagem dessa abordagem é que o OneDrive produz erros de sincronização, mas parece funcionar bem para as minhas necessidades.

    
por 19.04.2018 / 22:04