1. 创建项目(使用 angular-cli)
ng new demon-project
2. 生成项目中主要发布的组件模块
ng g module services
ng g service services/demon-service
然后编写实际的业务代码,此处不详述。
3. 安装 ng-packagr
npm install ng-packagr --save-dev
4. 在根目录下创建一个 ng-package.json 文件,并且写入如下内容
{
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib": {
"entryFile": "public_api.ts"
}
}
5. 在根目录下创建 public_api.ts 文件,将需要暴露出来的组件或者服务等等的类写入
export * from './src/app/services/services.module';
export * from './src/app/services/demon-service.service';
6. 在 package.json 文件中添加编译脚本 “packagr”,同时将 private 改成 false,把 dependencies 改成 peerDependencies 或者干脆删掉 dependencies。
注:private = true 表示不允许将组件发布到公共仓库
peerDependencies 表示其他组件如果安装了这个组件,则需要安装 peerDependencies 引入的所有组件
angular 组件的版本号有 ~ ^ 的符号, ~ 表示适用小版本,比如 ~7.2.0 表示适用 7.2.X, ^ 表示适用大版本,比如 ^7.2.0 表示适用 7.X.X
......
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"packagr": "ng-packagr -p ng-package.json"
},
"private": false,
"peerDependencies": {
"@angular/animations": "~7.2.0",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"core-js": "^2.5.4",
"md5": "^2.2.1",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
7. 编译生成 dist 目录
npm run packagr
8. 发布组件,在根目录下执行
npm publish dist --registry ${YOUR_SELT_REPOSITORY}
其中 ${YOUR_SELT_REPOSITORY} 替换为你自己的npm仓库