文件系统符号链接? 什么操作系统,软链接还是硬链接? 您可以通过复制进行任何更改吗?
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 文件,一切都开始工作了。
我认为我们在同一页面上。
@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 可以在开发期间检查最新版本,并且可以在构建时编译。
最有用的评论
同样的问题,但我使用 lerna 链接包,并且汇总报告链接包的意外令牌。