Angular10已發佈,但爲了發佈兼容angular5的老項目的npm包,只能考慮使用老版本的angular進行發佈,以前少各種不必要的問題。(試用Angular9發佈,但引入Angular5項目中後,報錯)
1、創建應用,並在app目錄下添加my-lib-modules(自定義)文件夾,在文件夾內創建test.module(名稱自定義),在test.module下添加component,並添加在exports中
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {TestComponent} from "./test/test.component";
@NgModule({
imports: [
CommonModule
],
declarations: [
TestComponent,
],
exports: [
TestComponent,
],
})
export class TestModule { }
2、安裝ng-packagr工具
npm install [email protected] --save-dev
關於ng-packagr版本的問題,試用了很多個版本,打包時均報錯,後在ng-packagr的github處找到有人回覆的答案,Angular5項目使用[email protected]可以發佈,但試用後還有是問題
因此考慮可能與CLI的版本有關,作者使用的是@angular/[email protected],因此試用了1.6.0的ng-packagr,正確輸出結果。
3、在根目錄下創建ng-package.json與public_api.ts文件,與src平級
ng-package.json文件內容:
{
"$schema": "./node_modules/ng-packagr/ng-package.chema.json",
"lib":{
"entryFile": "public_api.ts"
}
}
public_api.ts文件內容:
export * from './src/app/my-lib-modules/test/test.module';
4、修改package.json文件
"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 // 修改
注意:要刪除dependencies和devDependencies的內容,僅保留上面內容即可
5、進入dist文件夾,運行npm pack,得到xxxxxx.tgz文件
npm pack
6、登錄/註冊npm
npm login
正確輸入用戶名、密碼、郵箱,如果是註冊的話還要進入郵箱進行驗證
登錄成功會返回Logged in as dickence on https://registry.npmjs.org/.
7、發佈
npm publish
EOF