问题标签 [ng-packagr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 如何让 ng-packagr 生成源映射
我使用 Angular CLI 制作了一个 Angular 应用程序,并向其中添加了一些 packagr 文件。当我运行 pacakgr 时,不会为 dist 文件夹生成源映射。我该如何做到这一点?我已经在 tsconfig.json 中启用了它们,这是我所期望的。
这是一个演示问题的简单存储库:
angular5 - ng-packagr 和共享模块
我正在尝试使用 ng-pacakgr 将模块 X 与 Y 的依赖关系打包。X 和 Y 具有服务和组件。
应用程序/模块结构是:
- ModuleX 导入 ModuleY
- X.forRoot() 提供 ServiceY。
- ServiceY 用于 AppModule 和 ModuleX。
- AppModule 导入模块 X.forRoot() 和 Y.forRoot()。
使用 ng-packagr 打包 ModuleX 告诉我:
在 options.globals 中没有为外部模块“Y”提供名称 - 猜测“Y”
好的
运行该应用程序不会给出任何错误,但似乎我有两个 ServiceY 实例。
查看 chrome 中的 webpack 源代码,我有两次 ServiceY:
在两个 ServiceY 的构造函数中定位断点表明它在两个类中都停止了。
理论上,ServiceY 应该在我的整个应用程序中实例化一次,因为 ServiceY 在应用程序的根目录中提供
我尝试添加具有各种值的选项 umdModuleIds,但看起来并没有什么不同。
总之,我有两个唯一的 ServiceY 实例(一个由应用程序导入,另一个由 X 导入(并重新定义))。
问题是:
- taht 来自哪里。
- 我怎么能确定 Y 在我的应用程序中只实例化一次。
- 我应该在 umdModuleIds 中配置什么(如何找到 moduleId)
谢谢。
版本信息
javascript - ng-packagr:找不到命名空间接口
我尝试建立一个服务库。我通常使用服务文件中的接口。phpStorm 没有为此创建“导入”语句,它可以正常工作ng serve
这里是接口:(我只将它简化为接口的根,因为它在这篇文章中更清晰。通常有更多接口)
但是当我运行时,npm run packagr
我得到了这个错误:
有任何想法吗?我已经尝试在 public_api.ts 中导入接口,但这对我不起作用。
angular - ng-packagr:构建错误 EPERM:不允许操作
我按照Nikolas LeBlanc 的这篇教程构建了一个 Angular 4 组件库。本教程描述了一种在另一个项目中重用模块的方法,方法是打包一个项目并将其安装到另一个项目中。
首先,这是我的软件版本:
- Windows 10 专业版:1709 内部版本 16299.371
- 角 IDE:17.0.0.c0000019t201804160508
- ng-packagr:2.4.2
- @角/*:5.2.10
- 打字稿:2.5.3
- rxjs:5.5.10
- 节点:9.4.0
- npm:5.6.0
除了标题“创建我们的包”之外,我无法进一步遵循本教程,因为执行以下命令:
ng-packagr -p ng-package.json
执行此命令时会出现以下错误:
再次尝试时出现以下错误:
我也在我的 Mac 上尝试过,但一切正常,但我们都在 Windows 机器上工作。那么如何让 ng-packagr 在我的 Windows 机器上工作呢?
angular - NullInjectorError:使用 ng-packagr 时没有 StateObservable 的提供者
我有一个使用 ngrx/store 的 Angular 5 项目。该项目由一个应用程序和一个应用程序使用的共享库组成。直到今天,我们一直在为这两个项目一起编译 TypeScript——这个库只是用 TypeScript 代码“发布”的。
今天,我使用了这个库ng-packagr
并将其拉入到应用程序中yarn link
,这样我就可以运行本地代码。但是,当我尝试启动我的应用程序时,我在浏览器中收到此错误:
Unhandled Promise rejection: StaticInjectorError(AppModule)[Store -> StateObservable]:
StaticInjectorError(Platform: core)[Store -> StateObservable]:
NullInjectorError: No provider for StateObservable! ; Zone: <root> ; Task: Promise.then ; Value: Error: StaticInjectorError(AppModule)[Store -> StateObservable]:
StaticInjectorError(Platform: core)[Store -> StateObservable]:
NullInjectorError: No provider for StateObservable!
at _NullInjector.get (core.js:1002)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1242)
at StaticInjector.get (core.js:1110)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1242)
at StaticInjector.get (core.js:1110)
at resolveNgModuleDep (core.js:10854)
at _createClass (core.js:10895)
at _createProviderInstance$1 (core.js:10865)
我不知道这是从哪里来的错误。我唯一的线索是它提到了AppModule
. 在我的AppModule
中,我正在导入@ngrx/store
并导入StoreModule.forRoot
我的模块。
javascript - 无法获取使用 ng-packagr 发布的已发布包
在遵循本教程时。这是我得到的错误。唯一的区别是我声明了一个指令而不是组件,尽管它在本地开发中工作正常,但是当通过 npm 安装时,它会给出以下错误:
angular - 在 ng-packagr 构建中包含 json 文件
我想将 json 文件导入我的 Angular 5 应用程序,然后构建一个库。我可以通过包含此代码来完成第一部分
to typings.d.ts
,但是当我尝试构建它时,它失败并出现错误
有什么办法解决吗?
angular - 共享组件可以使用自己的私有@ngrx/store 吗?
我正在开发一个 Angular 共享组件(在它自己的仓库中,使用 ng-packagr 和 angular 5,作为 npm 包发布),我想使用 @ngrx/store,因为该组件足够复杂,足以证明这一点。我希望商店在组件的内部。特别是,这意味着:
- 集成应用程序不需要知道 @ngrx 来使用我的组件
- 集成应用程序可以使用与我的组件不同的 @ngrx 商店。
我的组件需要什么样的依赖关系(在我的组件中package.json
,例如 peerDependencies 或依赖项)和初始化代码(在我的组件的主模块中my-component.module.ts
)?
集成应用程序发布后需要引入、初始化和使用什么样的依赖关系(在集成应用程序中package.json
)和初始化代码(在集成应用程序的主模块中) ?app.module.ts
npm - package.json 无法找到文件
我在 package.json 的脚本部分中添加了一个脚本,该脚本位于根目录中
但是在使用运行此脚本时
给出错误提示“没有这样的文件或目录”并尝试在该位置找到我的文件
代替
我们是否需要一些配置来映射文件?
angular-cli - Angular 6 使用资产构建库
在构建和打包 Angular 6 库时,我似乎无法指示 Angular CLI 将库的资产复制到dist/assets
每次构建的文件夹中。
假设项目的文件夹结构是这样的 -
当我运行ng build lib1
或文件夹没有被复制ng build lib1 --prod
到.assets/icons
dist/lib1/assets/icons
如果我运行,ng build
则src/assets
(根 src/assets)正在被复制,但不是projects/lib1/assets
.
该angular.json
文件包含对的引用,"assets": ["src/assets"]
但不允许将assets
密钥专门添加到项目中,只能添加到主根应用程序。添加时,我收到以下错误:
架构验证失败并出现以下错误:数据路径“”不应具有其他属性(资产)。
我还尝试将以下自定义复制规则添加到资产中,以将资产复制到 dist/lib 而不是 dist/appname:
但我收到以下错误:
无法将资产写入输出路径之外的位置。
是否有一种内置方式来管理每个构建中的库资产副本?
更新 06/05/2018
我为此向 Angular CLI 提出了一个问题,但尚未收到回复。问题 #11701