Rollup-plugin-typescript2: Symlink tidak berfungsi

Dibuat pada 30 Okt 2019  ·  12Komentar  ·  Sumber: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Ketika symlink dibuat ke dependensi, rollup memberikan kesalahan "Kesalahan: Token tak terduga (Perhatikan bahwa Anda memerlukan plugin untuk mengimpor file yang bukan JavaScript)"

Lingkungan Hidup

Versi

  • naskah:^3.6.4
  • gulung:"^1.26.0"
  • rollup-plugin-typescript2:^0.24.3

rollup.config.js

tsconfig.json

package.json

keluaran plugin dengan verbositas 3

bug

Komentar yang paling membantu

Masalah yang sama, tetapi saya menggunakan lerna untuk menautkan paket, dan rollup mengeluhkan token tak terduga untuk paket yang ditautkan.

Semua 12 komentar

Symlink sistem file? Apa OS, tautan lunak atau keras? setiap perubahan Anda dapat membuat repo dengan reproduksi?

Sistem operasi Windows. Membuat symlink menggunakan opsi "npm link" ke modul eksternal. Jika modul diinstal maka tidak ada masalah. Tetapi untuk menguji secara lokal kita perlu membuat symlink dan itu tidak hanya berfungsi dengan plugin TypeScript2. Dengan plugin TypeScript1, symlink berfungsi tetapi enum tidak berfungsi.

Masalah yang sama, tetapi saya menggunakan lerna untuk menautkan paket, dan rollup mengeluhkan token tak terduga untuk paket yang ditautkan.

masalah yang sama persis di windows dengan lerna
Jika saya menyalin folder langsung ke node_modules semuanya baik-baik saja, tetapi dengan symlink tidak berfungsi

@PavaniVaka @TerenceZ @thealjey ada kesempatan untuk repo kecil dengan reproduksi?

@ezolenko Maaf, tidak. Tapi saya sedikit mempersempit masalah ini. Saya perhatikan bahwa jika modul eksternal disalin ke direktori aplikasi maka itu berfungsi. Tetapi jika itu hanya symlink maka itu tidak berfungsi. Misalnya: Dengan yalc kita dapat menguji dependensi eksternal dengan mudah. Karena itu membuat folder yalc di direktori aplikasi dan menyalin modul eksternal ke folder itu dan kemudian membuat symlink dari folder yalc ke node_modules. Semoga ini memberi petunjuk.

@ezolenko Saya sebenarnya telah menemukan apa masalahnya dalam kasus saya dan itu tidak ada hubungannya dengan plugin ini (berfungsi dengan sempurna) atau symlink dalam hal ini.
Ini lebih merupakan kekurangan dari TypeScript itu sendiri, atau lebih tepatnya konfigurasinya mengandalkan file json.
Masalahnya adalah symlink diselesaikan ke file di luar CWD.
Saya cukup memindahkan perintah build saya ke file package.json tingkat atas dan semuanya mulai berfungsi.

saya pikir kita berada di halaman yang sama di sini.

194

@PavaniVaka @TerenceZ @thealjey ada kesempatan untuk repo kecil dengan reproduksi?

@ezolenko https://github.com/moki/mokui ada satu.

Saya telah menyelesaikan masalah # 194, jika ada yang mengalami masalah yang sama, di bawah ini saya memberikan solusi:

Ketika seseorang mencoba untuk membangun setiap paket terpisah di dalam monorepo, rollup mencoba untuk menyelesaikan @organization/package-name dan memasukkannya ke dalam file build.gradle. Anda tidak menginginkan itu, jadi untuk menghindarinya saat membangun setiap paket, saya menguraikan package.json , mengekstrak kunci bidang dependencies , lalu memeriksanya di dalam callback dapat menyediakan bidang external di dalam konfigurasi rollup. Ini akan menghasilkan hasil yang diinginkan.

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;

masalah yang sama dan rollup-plugin-typescript berfungsi

Masalah juga terjadi ketika file di bawah src adalah tautan simbolis ke file TypeScript di luar proyek.

misalnya struktur file seperti di bawah ini:

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/
...

ketika saya mengkompilasi proyek di myapp/myapp-app,
rollup keluhan dengan kesalahan di bawah ini:

[ 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 {

dengan kata interface disorot dengan warna merah

Solusi saya adalah menggunakan kait pra/pasca dalam skrip npm untuk memutuskan tautan dan menautkan file ...
Jadi IDE saya dapat memeriksa versi terbaru selama dev, dan dapat dikompilasi saat membangun.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat