-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/core package #393
Feature/core package #393
Conversation
@@ -1,6 +1,7 @@ | |||
{ | |||
"name": "plataforma-sabia", | |||
"name": "root", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mudança necessária para que os pacotes internos reconhecessem esse como o pacote base do projeto.
Test summaryRun details
View run in Cypress Dashboard ➡️ This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. You can manage this integration in this project's settings in the Cypress Dashboard |
"private": true, | ||
"version": "1.0.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Necessário deixar todos os pacotes na mesma versão para que o comando bootstrap
do lerna realmente consiga instalar e linkar as dependências dos pacotes internos.
cc @nicholasio @marcusmota @mateus4k @luizeboli @davioliveiira Ponto 1)
Com isso, já consigo importar pacotes do pacote Ponto 2)
Apesar da mensagem, o erro não tem a ver com o uso incoreto do custom hook, mas sim do fato de, em algum momento, o projeto ter mais de um pacote do
Issue aberta no projeto do Outros projetos que usam o Next e se basearam na issue 9022:
Repositório de exemplo exibindo o bug: Para consulta posterior (serve de exemplo caso decidamos por fazer uma config específica no De um modo geral, há principalmente 2 soluções possíveis:
Confesso que estou em dúvida de qual seria a melhor solução. Inicialmente, pensei na solução 1, mas, talvez, para não mexermos em toda a estrutura,talvez fosse melhor usar a solução 2, configurando somente no webpack do projeto web onde procurar pelos pacotes do Eu realizei a config 1 para fazer um teste. Com isso, consegui passar a importar o pacote O que acham? Algum insight? @nicholasio P.S.: Ainda aplicarei a mesma solução que for decidida aqui para o pacote do Ainda irei:
|
@lcnogueira excelente investigação, parabéns 🎉 Não entendi muito bem a segunda solução. Seria configurar o webpack do pacote core pra pegar o react/dom do pacote web, ou o pacote web procurar no pacote core? Pois você comenta que a segunda solução seria A solução 1 parece ser a mais correta, mas se for complexo/demorado em relação a outra, podemos configurar o webpack. Considerando que estamos atrasados pode ser a melhor escolha nesse momento |
Oi @luizeboli , obrigado pelo retorno. De fato, ficou um pouco confuso a explicação (editei lá). A solução 2 seria fazer com que o pacote |
@lcnogueira o pacote core precisa declarar o react e react-dom como peerDependencies, já tentou isso? |
Pensei em sugerir isso, mas no primeiro link é uma das primeiras coisas que o usuário relata, que mesmo com peer deps não rolou |
Putz...eu fiz tantos testes que esqueci de confirmar esse detalhe, @nicholasio . Tinha visto no link que @luizeboli comentou também esse detalhe de que não funcionaria. Mas testei agora só por desencargo e funcionou! 🤷♂️ Então, voltei o código: deixei cada pacote com suas dependências (do jeito que já estava) e só deixei os pacotes do |
Haha, o bom é que agora nunca mais esquece. srsrs Muito provavelmente o que aconteceu é que o npm install instalou o react como dep de fato no core e o next.js estava pegando duas versões do react. Quando vc colocar como peerDep ela não é tratado como uma dependência instalado, e no caso quem está consumindo essa dep é que precisa instalar. |
Ah, entendi. Agora não esqueço mais 👊 . Depois vi que lá no projeto do "let-me-fix" realmente está usando peerDependencies também. |
@@ -6,7 +6,7 @@ | |||
## Running the Admin Server | |||
|
|||
1. Rename the `.env.example` to `.env` and replace the variables values. | |||
2. Install the dependencies: `npm install`. | |||
2. Make sure you have [installed the dependencies from the root package](../../README.md#rocket-get-up-and-running). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Com a configuração do monorepo, os pacotes serão sempre instalados pela raiz, através do comando lerna bootstrap
(automaticamente executado após o install).
moduleNameMapper: { | ||
'^react$': '<rootDir>/node_modules/react', | ||
'^next/router$': '<rootDir>/node_modules/next/router', | ||
'^next/link$': '<rootDir>/node_modules/next/link', | ||
'^react-instantsearch-dom': '<rootDir>/node_modules/react-instantsearch-dom', | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mapeia alguns pacotes para que sejam reconhecidos pelo Jest. Necessário porque, em alguns casos, importamos pacotes de dentro do core
para fazer um mock. Ex.:
jest.spyOn(useAuth, 'default').mockReturnValue({
user: {
email,
},
});
Nesses casos, ele não vai usar alguns pacotes que estão como peerDependencies
ou não estão incluídos no core. Nesse caso, mapeamos para que o jest use do próprio pacote web
(o <rootDir>
aponta para o diretório web
).
Summary
Resolves #375
Relevant technical choices
QA Steps
Checklist