angular-cli 链接库

Linked libraries

链接库

While working on a library, it is common to use npm link to
avoid reinstalling the library on every build.
在库工作时,它通常使用 [npm link] 避免在每次构建时重复安装库。

While this is very useful there are a few caveats to keep in mind.
虽然这是非常有用的, 有几个告诫要牢记。

The library needs to be AOT compatible

库需要 AOT 兼容

Angular CLI does static analysis even without the --aot flag in order to detect lazy-loade routes.
If your library is not AOT compatible, you will likely get a static analysis error.
Angular CLI 静态分析即使没有 --aot 标记,为了惰加载路由。假如你的库不是AOT兼容,你将获得一个静态分析错误。

The library still needs to be rebuilt on every change

每次改变库仍热需要重构

Angular libraries are usually built using TypeScript and thus require to be built before they
are published.
For simple cases, a linked library might work even without a build step, but this is the exception
rather than the norm.
Angular的库经常使用Typescript构建,因此要求构建之前他们已经发布过。对于简单案例,即使没有生成步骤, 链接库也可能工作, 但这是例外
而不是规范。

If a library is not being built using its own build step, then it is being compiled by the
Angular CLI build system and there is no guarantee that it will be correctly built.
Even if it works on development it might not work when deployed.
如果库未使用自己的构建步骤生成, 则由
Angular CLI 构建系统, 并不能保证它将被正确构建。即使它对开发起作用, 部署时也可能不起作用。

When linking a library remember to have your build step running in watch mode and the library's
package.json pointing at the correct entry points (e.g. 'main' should point at a .js file, not
a .ts file).
链接库时, 请记住在监视模式和库包中运行生成步骤. json 指向正确的入口点 (例如, main 应该指向 .js 文件, 而不是 .ts 文件)。

Use TypesScript path mapping for Peer Dependencies

使用 TypesScript 路径映射每个依赖

Angular libraries should list all @angular/* dependencies as
Peer Dependencies.
This insures that, when modules ask for Angular, they all get the exact same module.
If a library lists @angular/core in dependencies instead of peerDependencies then it might
get a different Angular module instead, which will cause your application to break.
库应将所有角度/依赖项列出为对等依赖项。这保证, 当模块要求角, 他们都得到完全相同的模块。如果库在依赖项中列出了角度/核心而不是 peerDependencies, 那么它可能会得到一个不同的角度模块, 这将导致应用程序中断。

While developing a library, you'll need to have all of your peer dependencies also installed
via devDependencies - otherwise you could not compile.
A linked library will then have it's own set of Angular libraries that it is using for building,
located in it's node_modules folder.
This can cause problems while building or running your application.
在开发库时, 您还需要通过 devDependencies 安装所有的对等依赖项, 否则您无法编译。链接库将有自己的一组用于构建的 angular库, 位于其 node_modules 文件夹中。这可能会导致生成或运行应用程序时出现问题

To get around this problem you can use the TypeScript
path mapping.
With it, you can tell TypeScript that it should load some modules from a specific location.
要解决此问题, 可以使用文稿路径映射。通过它, 您可以告诉文稿它应该从特定位置加载一些模块。

You should list all the peer dependencies that your library uses in ./tsconfig.json, pointing
them at the local copy in the apps node_modules folder.
This ensures that you all will always load the local copies of the modules your library asks for.
您应该列出库在 .tsconfig 中使用的所有对等依赖项, 并将它们指向应用程序 node_modules 文件夹中的本地副本。这将确保您始终加载库要求的模块的本地副本。

{
  "compilerOptions": {
    // ...
    // Note: these paths are relative to `baseUrl` path.
    "paths": {
      "@angular/*": [
        "../node_modules/@angular/*"
      ]
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容