在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" } }
- Angular 2最终版本量angular器问题使用Webpack
- Angular 2和NodeJs – 使用angular度为2的数据库连接variables调用NodeJs函数
- 如何用NodeJs缩小Docker镜像的大小
- npm后安装types无法正常工作
- 如何将Nightmarejs导入到angular-cli组件中
- 在angular2中使用process.env.NODE_ENV和process.env.ENVvariables是什么原因?
- angular度种子量angular器抛出错误
- npm ERR! Windows_NT 10.0.10586
- 运行构build时,如何为node.js分配更多的内存? (苹果电脑)