在Angular 2应用程序中使用本地npm仓库中的组件
我已经使用d3和Angular 2实现了一个通用的图表组件。然后将它发布到本地的npm仓库中,以便任何人只要运行npm install my-chart命令就可以在他们的Angular项目中使用这个图表组件。
我创build了一个基本的Angular 2项目来重用我的图表组件。 然后运行npm install my-chart –save ,向package.json添加“@ my / my-chart”:“^ 1.0.0” 。 但运行服务器时出现问题,它会在我的控制台上提示错误。
Module not found: Error: Can't resolve 'd3' in '...\node_modules\@my\my-chart'
我需要在我的Angular项目中安装D3吗? 但是我觉得在我们运行npm install my-chart的时候,把d3和图表组件捆绑在一起会更好。
什么是最好的?
已发布软件包的package.json文件:
{ "name": "@my/my-chart", "version": "1.0.2", "license": "MIT", "angular-cli": {}, "author": "rosew", "main": "./index.js", "keywords": [ "button", "card" ] }
消费包的package.json文件:
"dependencies": { "@angular/common": "2.4.6", "@angular/compiler": "2.4.6", "@angular/core": "2.4.6", "@angular/forms": "2.4.6", "@angular/http": "2.4.6", "@angular/platform-browser": "2.4.6", "@angular/platform-browser-dynamic": "2.4.6", "@angular/router": "3.4.6", "core-js": "2.4.1", "rxjs": "5.0.1", "ts-helpers": "1.1.2", "zone.js": "0.7.6", "@my/core": "1.1.176", "@my/my-button": "^1.0.9", "@my/my-chart": "^1.0.1" }, "devDependencies": { "@angular/cli": "1.0.0-beta.31", "@angular/compiler-cli": "2.4.6", "@types/jasmine": "2.5.38", "@types/node": "6.0.42", "codelyzer": "2.0.0-beta.1", "jasmine-core": "2.5.2", "jasmine-spec-reporter": "2.5.0", "karma": "1.2.0", "karma-chrome-launcher": "2.0.0", "karma-cli": "1.0.1", "karma-jasmine": "1.0.2", "karma-remap-istanbul": "0.2.1", "protractor": "4.0.13", "ts-node": "1.2.1", "tslint": "4.4.2", "typescript": "2.0.3" }
项目找不到d3的原因是没有指定为依赖项的地方,所以不能包含它。
你有两个select:
第一个select是将d3作为依赖项添加到库中,并将在@ my / my-chart的安装中加载。
第二个选项,更好的方法是将d3作为对等关系添加到您的库中。 这迫使消费图书馆importd3。 有几个很好的理由,如给消费者更多的依赖关系的控制,并减less重叠,如果多个依赖需要d3。
有一件事情,不要select任何选项,确保对d3的依赖性尽可能广泛,以便在d3发布更新时不会locking到某个版本。
my-chart package.json
{ "name": "@my/my-chart", ... "peerDependencies": { "d3": "^4.0.0" } }
消费者package.json
{ "name": "consuming-package", ... "dependencies": { "d3": "^4.6.0" } }
- Angular4 + Universal + ng-bootstrap导致“意外令牌导入”错误
- Angular 2 cli与Express js
- 找不到与给定名称匹配的资源:attr'android:keyboardNavigationCluster'
- 当npm启动我的Angular2项目时,重复的标识符导出错误
- 量angular器与frisby API的集成
- Angular 5插件的依赖关系
- JavaScript:使用页面对象进行量angular器testing,select下拉列表项目
- 获取“ProgressEvent”,而不是在Angular + NodeJS中响应json
- MSBuild是否需要在Angular2的依赖项(在node_modules中)中传输.ts文件以使Angular2正常工作?