Rollup-plugin-typescript2: 符号链接不起作用

创建于 2019-10-30  ·  12评论  ·  资料来源: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

当符号链接被创建到依赖项时,汇总会给出错误“错误:意外的令牌(请注意,您需要插件来导入不是 JavaScript 的文件)”

环境

版本

  • 打字稿:^3.6.4
  • 汇总:“^1.26.0”
  • 汇总插件打字稿2:^ 0.24.3

汇总配置文件

配置文件

包.json

详细程度为 3 的插件输出

最有用的评论

同样的问题,但我使用 lerna 链接包,并且汇总报告链接包的意外令牌。

所有12条评论

文件系统符号链接? 什么操作系统,软链接还是硬链接? 您可以通过复制进行任何更改吗?

Windows 操作系统。 使用“npm link”选项为外部模块创建符号链接。 如果安装了模块,则没有问题。 但是要在本地进行测试,我们需要创建符号链接,这不仅适用于 typescript2 插件。 使用 typescript1 插件符号链接有效但枚举无效。

同样的问题,但我使用 lerna 链接包,并且汇总报告链接包的意外令牌。

在带有 lerna 的 Windows 上完全相同的问题
如果我将文件夹直接复制到 node_modules 一切正常,但使用符号链接它不起作用

@PavaniVaka @TerenceZ @thealjey 有没有机会复制一个小型回购?

@ezolenko对不起,不。 但我把问题缩小了一点。 我注意到,如果将外部模块复制到应用程序目录,则它可以工作。 但如果它只是符号链接,则它不起作用。 例如:使用 yalc,我们可以轻松测试外部依赖项。 因为它在应用程序目录中创建 yalc 文件夹并将外部模块复制到该文件夹​​,然后创建从 yalc 文件夹到 node_modules 的符号链接。 希望这能提供一些线索。

@ezolenko我实际上已经弄清楚了我的问题是什么,这与这个插件(它运行良好)或符号链接无关。
这更多是 typescript 本身的一个缺点,或者说它的配置依赖于 json 文件。
问题是符号链接正在解析为 CWD 之外的文件。
我只是将我的构建命令移动到顶级 package.json 文件,一切都开始工作了。

我认为我们在同一页面上。

194

@PavaniVaka @TerenceZ @thealjey 有没有机会复制一个小型回购?

@ezolenko https://github.com/moki/mokui有一个。

我已经解决了问题 #194,如果有人遇到同样的问题,下面我提供解决方案:

当尝试在 monorepo 中构建每个单独的包时,rollup 会尝试解析@organization/package-name并将其包含在构建中。 你不想那样,所以为了在构建每个包时避免它,我正在解析package.json ,提取dependencies字段的键,然后在callback检查它们可以提供内部汇总配置的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以红色突出显示

我的解决方法是在 npm 脚本中使用 pre/post 钩子来取消链接和链接文件......
所以我的 IDE 可以在开发期间检查最新版本,并且可以在构建时编译。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

yangwao picture yangwao  ·  7评论

eddow picture eddow  ·  14评论

alexsasharegan picture alexsasharegan  ·  14评论

brandon-leapyear picture brandon-leapyear  ·  7评论

HelloDennis picture HelloDennis  ·  3评论