Rollup-plugin-typescript2: Os links simbólicos não estão funcionando

Criado em 30 out. 2019  ·  12Comentários  ·  Fonte: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Quando o link simbólico é criado para a dependência, o rollup apresenta o erro "Erro: token inesperado (observe que você precisa de plug-ins para importar arquivos que não sejam JavaScript)"

Meio Ambiente

Versões

  • texto datilografado: ^ 3.6.4
  • rollup: "^ 1.26.0"
  • rollup-plugin-typescript2: ^ 0.24.3

rollup.config.js

tsconfig.json

package.json

saída do plugin com detalhamento 3

bug

Comentários muito úteis

O mesmo problema, mas eu uso lerna para vincular pacotes e rollup reclama token inesperado para os pacotes vinculados.

Todos 12 comentários

Links simbólicos do sistema de arquivos? Qual sistema operacional, links físicos ou físicos? alguma mudança você pode fazer um repo com reprodução?

Sistema operacional Windows. Link simbólico criado usando a opção "npm link" para o módulo externo. Se o módulo estiver instalado, não há problema. Mas para testar localmente precisamos criar links simbólicos e isso não está funcionando apenas com o plugin typescript2. Com o plugin typescript1, os links simbólicos funcionam, mas os enums não.

O mesmo problema, mas eu uso lerna para vincular pacotes e rollup reclama token inesperado para os pacotes vinculados.

exatamente o mesmo problema no Windows com lerna
Se eu copiar a pasta diretamente para node_modules está tudo bem, mas com um link simbólico não funciona

@PavaniVaka @TerenceZ @thealjey alguma chance de um pequeno repo com reprodução?

@ezolenko Desculpe, não. Mas reduzi um pouco a questão. Percebi que, se o módulo externo for copiado para o diretório do aplicativo, ele funciona. Mas se for apenas um link simbólico, não está funcionando. Por ex: Com yalc podemos testar as dependências externas facilmente. Porque ele cria a pasta yalc no diretório do aplicativo e copia o módulo externo para essa pasta e, em seguida, cria um link simbólico da pasta yalc para node_modules. Espero que isso dê alguma pista.

@ezolenko Na verdade, descobri qual era o problema no meu caso e não tem nada a ver com este plugin (funciona perfeitamente) ou links simbólicos para esse assunto.
É mais uma deficiência do próprio texto digitado, ou melhor, sua configuração depende de arquivos json.
O problema era que o link simbólico estava resolvendo para um arquivo fora do CWD.
Simplesmente movi meu comando de construção para o arquivo package.json de nível superior e tudo começou a funcionar.

acho que estamos na mesma página aqui.

194

@PavaniVaka @TerenceZ @thealjey alguma chance de um pequeno repo com reprodução?

@ezolenko https://github.com/moki/mokui existe um.

Resolvi o problema nº 194, caso alguém encontre o mesmo problema, abaixo estou fornecendo a solução:

Quando alguém tenta construir cada pacote separado dentro do monorepo, o rollup tenta resolver @organization/package-name e incluí-lo na construção. Você não quer isso, então, para evitá-lo ao construir cada pacote, estou analisando package.json , extraindo as chaves do campo dependencies e, em seguida, verificá-las dentro de callback one pode fornecer o campo external da configuração de rollup. Isso produzirá o resultado desejado.

import json from "rollup-plugin-json";

const pkg = process.env.LERNA_PACKAGE_NAME &&
          require(`${process.env.LERNA_PACKAGE_NAME}/package.json`);

const dependencies = ({ dependencies }) => Object.keys(dependencies || {});

const pkgdependencies = dependencies(pkg);

/* exported rollup configuration */
const config = {
    /* your config goes here... */
    /* id is the source name if list of dependencies includes
     * id source name, then mark it as external,
     */
    external: id => pkgdependencies.includes(id)
};

export default config;

mesmo problema e rollup-plugin-typescript funciona

O problema também ocorre quando um arquivo sob o src é um link simbólico para um arquivo typescript fora do projeto.

por exemplo, a estrutura do arquivo conforme abaixo:

core/core-client/src/api.ts
myapp/myapp-client/src/api.ts
myapp/myapp-app/src/domain/api.ts -> ../../../myapp-client/src/domain/api.ts
myapp/myapp-app/src/domain/core -> ../../../../core/core-client/src/domain/
...

quando eu compilar o projeto em myapp / myapp-app,
reclamação de rollup com o erro abaixo:

[ ERROR ]  Rollup: Parse Error: ../myapp-client/src/domain/api.ts:28:7
           Unexpected token (Note that you need plugins to import files that are not JavaScript)

     L28:  export interface IPrimus extends Primus {

com a palavra interface destacada em vermelho

Minha solução alternativa é usar pré / pós gancho no script npm para desvincular e vincular os arquivos ...
Portanto, meu IDE pode verificar a versão mais recente durante o desenvolvimento e pode ser compilado durante a construção.

Esta página foi útil?
0 / 5 - 0 avaliações