Rollup-plugin-typescript2: БимволичСскиС ссылки Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 30 ΠΎΠΊΡ‚. 2019  Β·  12ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Когда Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ создаСтся символичСская ссылка, Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ «Ошибка: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ JavaScript)Β»

Π‘Ρ€Π΅Π΄Π°

ВСрсии

  • ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст: ^ 3.6.4
  • Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚: "^ 1.26.0"
  • скопированный ΠΏΠ»Π°Π³ΠΈΠ½ typescript2: ^ 0.24.3

rollup.config.js

tsconfig.json

package.json

Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½Π° с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ 3

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ lerna для связывания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ТалуСтся Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ для связанных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ВсС 12 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

БимволичСскиС ссылки Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы? Какая ОБ, софт ΠΈΠ»ΠΈ ТСсткиС ссылки? ΠΊΠ°ΠΊΠΈΠ΅ измСнСния ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎ с воспроизвСдСниСм?

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows. Π‘ΠΎΠ·Π΄Π°Π½Π° символичСская ссылка с использованиСм ΠΎΠΏΡ†ΠΈΠΈ "npm link" Π½Π° внСшний ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ установлСн, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ‚. Но для локального тСстирования Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ символичСскиС ссылки, Π° это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ typescript2. Π‘ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ typescript1 символичСскиС ссылки Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ пСрСчислСния Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ lerna для связывания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ТалуСтся Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ для связанных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΎΠΊΠ½Π°ΠΌΠΈ с lerna
Если я ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ прямо Π² node_modules, всС Π² порядкС, Π½ΠΎ с символичСской ссылкой Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

@PavaniVaka @TerenceZ @thealjey Π΅ΡΡ‚ΡŒ Π»ΠΈ шанс Π½Π° нСбольшоС Ρ€Π΅ΠΏΠΎ с воспроизвСдСниСм?

@ezolenko ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅, Π½Π΅Ρ‚. Но я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сузил вопрос. Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Ссли внСшний ΠΌΠΎΠ΄ΡƒΠ»ΡŒ копируСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Ссли это просто символичСская ссылка, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. НапримСр: с yalc ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ внСшниС зависимости. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ создаСт ΠΏΠ°ΠΏΠΊΡƒ yalc Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ внСшний ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² эту ΠΏΠ°ΠΏΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ создаСт ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ссылку ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ yalc Π½Π° node_modules. НадСюсь, это даст ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ€Π°Π·Π³Π°Π΄ΠΊΠ΅.

@ezolenko Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ понял, Π² Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ случаС, ΠΈ это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с этим ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ (ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚) ΠΈΠ»ΠΈ символичСскими ссылками Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ.
Π­Ρ‚ΠΎ скорСС нСдостаток самого машинописного тСкста, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, основанной Π½Π° Ρ„Π°ΠΉΠ»Π°Ρ… json.
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ символичСская ссылка Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»Π° Ρ„Π°ΠΉΠ» Π²Π½Π΅ CWD.
Π― просто пСрСмСстил свою ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сборки Π² Ρ„Π°ΠΉΠ» package.json Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, ΠΈ всС Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ здСсь Π½Π° ΠΎΠ΄Π½ΠΎΠΉ страницС.

194

@PavaniVaka @TerenceZ @thealjey Π΅ΡΡ‚ΡŒ Π»ΠΈ шанс Π½Π° нСбольшоС Ρ€Π΅ΠΏΠΎ с воспроизвСдСниСм?

@ezolenko https://github.com/moki/mokui Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½.

Π― Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β„–194, Π½Π° случай, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ столкнСтся с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΈΠΆΠ΅ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Когда ΠΊΡ‚ΠΎ-Ρ‚ΠΎ пытаСтся ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ монорСпозитория, Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ пытаСтся Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ @organization/package-name ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² сборку. Π’Ρ‹ этого Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, поэтому, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого ΠΏΡ€ΠΈ создании ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, я Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽ package.json , извлСкаю ΠΊΠ»ΡŽΡ‡ΠΈ поля dependencies , Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ callback one ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ external Π²Π½ΡƒΡ‚Ρ€ΠΈ сводной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ даст ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

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;

Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ rollup-plugin-typescript Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Π² src являСтся символичСской ссылкой Π½Π° Ρ„Π°ΠΉΠ» машинописного тСкста Π²Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, файловая структура, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

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

ΠΊΠΎΠ³Π΄Π° я ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² myapp / myapp-app,
сводная Талоба с ошибкой ниТС:

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

со словом interface Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ красным

МоС ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pre / post hook Π² скриптС npm, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ...
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, моя IDE ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ послСднСй вСрсии Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ сборкС.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ