当前位置: 首页 > 知识库问答 >
问题:

如何获得汇总以包括来自另一个包的依赖项在其转录(TypeScript)中的lerna monorepo?

蓝逸仙
2023-03-14

我创建了一个简单的例子来说明我的问题:Github repo。

我有一个lerna monorepo,在packages文件夹中有两个npm包,这些包被称为:

utils:导出函数:

export const add = (a:number, b: number) => a + b

组件库::导出一个简单的功能组件:

import React from 'react';
import { add } from '@project/utils';

export const MyComponent = () => <div>{add(2, 2)}</div>;

monorepo的根有一个tsconfig.json,它定义了一个路径键,用于将@project/*形式的任何导入映射到包。

{
  "compilerOptions": {
    "jsx": "react",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "moduleResolution": "node",
    "allowJs": true,
    "baseUrl": ".",
    "paths": {
      "@project/*": ["packages/*/src"]
    }
  },
  "exclude": ["**/build/**"]
}

每个包都有一个汇总。配置。js,两者基本相同(尽管我们只使用组件库包中的一个):

import typescript from '@rollup/plugin-typescript';
import commonjs from '@rollup/plugin-commonjs';

export default {
    input: 'src/index.tsx',
    output: {
        dir: './build',
        format: 'cjs'
    },
    plugins: [
        commonjs(),
        typescript({ tsconfig: '../../tsconfig.json'}),
    ]
};

因此,它们都使用roottsconfig中定义的路径。json,他们使用一个插件来传输Typescript。

组件库@project/utils导入一个名为add(a,b)的函数。

我的目标是创建这个库的构建(使用rollup),而不必先构建utils包。换句话说,我想构建组件库解析从utilsutils源代码的导入,而不是node_modules中符号链接包中的构建文件夹(即,不使用lerna创建的符号链接)。

我几乎实现了这一点,只是在组件库中运行构建脚本时,出现了一个错误:

src/index。tsx→ ./建筑[!] 错误:意外标记(请注意,您需要插件来导入非JavaScript文件)。。\utils\src\index。ts(1:21)1:export const add=(a:number,b:number)=

按照我的理解,这意味着导入的解析工作正常,但rollup并不是传输来自外部依赖项的TS文件。

如何让rollup通过rollup将UTIL中的文件包含在传输中?

共有2个答案

曾皓
2023-03-14

对于monorepo,许多(如果不是全部的话)包裹都将被吊起。所以要下定决心让自己看起来更高。尝试使用nodeResolve选项:

{
    rootDir: path.join(process.cwd(), '..')
}
赫连晋
2023-03-14

如果这真的是问题所在

按照我的理解,这意味着导入的解析工作正常,但rollup并不是传输来自外部依赖项的TS文件。

您可以从@rollup/plugin Babel运行Babel,并直接用Babel传输ts文件。巴贝尔将检查节点模块中的文件

 类似资料:
  • 我正在开发一个NPM包,它使用rollup绑定并发布到NPM。我想了解一个依赖项是否应该通过汇总绑定,最佳实践是什么。以下是我的逐步分析: > “src”中使用的每个依赖项都应该添加到“deps”或“peerDeps”中 如果您选择只将其放在“peerDeps”中,而不是“deps”,考虑到本地构建目的,最好添加到“devDeps”。否则,您可能必须使用第三方工具在“peerDeps”中安装依赖项

  • 我可以像这样创建sessionfactory bean。 但是,使用带有jar的类路径或列出hbm.xml文件的@EntityScan或@code仍然不能生成托管类型:classcom.opensymphony.workflow.spi.hibernate.HibernateMONtStep 我看到了一些答案,您使用不同的类来生成sessionFactory bean。有没有一种简单的方法可以获取

  • 我正试图让maven下载所有的依赖项(编译、测试、插件等)。)这样我就可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们。 我们已经对maven build进行了dockerized,这样我们就可以从jenkins运行它,而无需在jenkins机器上安装大量构建特定的依赖项(Java、redis、maven依赖项等)。我们的构建依赖于增量docker构建,它只执行实际需要

  • 问题内容: 我正在尝试为我的包裹写东西。我的程序包需要指定对另一个git repo的依赖。 这是我到目前为止所拥有的: 当我跑步时: 我懂了 找不到满足SomePrivateLib> = 0.1.0要求的版本(来自分析)(来自版本:)找不到SomePrivateLib> = 0.1.0(来自分析)的匹配分布 我究竟做错了什么 ? 问题答案: 您可以在此处找到正确的方法。 关键不是提供指向git存储

  • 目前,在我的中有一条关于支持库不使用相同版本的警告。 所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到了27.0.1、23.4.0版本。示例包括com.android.support:animated-vector-drawable:27.0.1和com.android.support:cardview-v7:23.4.0 还有一个很好的方

  • Eclipse-Neon Maven Java原型-4项目 嗨,我生成了一个包含4个项目的maven原型? 请你帮我做那件事好吗。因为我试过但没有成功 我的尝试: 我添加了对BULK的框架依赖 我添加了对bulk_ear的框架依赖 但是当我安装Maven时,framework.jar没有打包到EAR。