Angular 自己的Library

2021-03-17  本文已影响0人  小米和豆豆

//仅学习记录使用

Angular 自己的Library

  • ng new projectName 创建一个新的项目
  • ng g library libraryName --prefix xxx #libraryNamelib库名称 #xxx : 组件前缀(如 nz-zorro 的组件前都是 nz-xxx)
"scripts": {
 ...
 // 1. 编译Lib库
 // 说明: my-lib是你的Lib库的名字
 // 编译的结果会放到dist/libraryName目录下(在ng-package.json文件中配置)
 "build_lib": "ng build libraryName",
 // 2. 将编译之后的Lib库打包
 // 说明: `npm pack`会将你编译之后的代码打包成.tgz文件
 "npm_pack": "cd dist/libraryName && npm pack",
 // 3. 在宿主工程中安装刚刚打包好的Lib库
 // 说明: 宿主工程作为测试用的工程, 本地安装刚打包好的Lib库即可
 "npm_install": "npm i ./dist/libraryName/libraryName-0.0.1.tgz",
 //lib库中静态资源丢失 :可以在主程序的package.json 文件中加入一条命令:
// 说明: 将assets目录从Lib库中copy到dist/xxx中 (环境系统不同,命令不同)
 "copy_assets_win": "xcopy projects\\au-ui\\src\\assets dist\\au-ui\\assets\\ /s/y", 
 "copy_assets_linux": "cp -rf projects/my-lib/src/assets dist/my-lib/assets",
 //4. 整合之后的命令: 最终只需要执行这一个命令即可
 // 说明: 每次Lib库有修改, 都需要重新执行这个命令
 "package": "npm run build_lib && copy_assets_win && npm run npm_pack && npm run npm_install"
 ...
}
"assets": [
      "src/favicon.ico",
      "src/assets",
      {
          "glob": "**/*",
          "input": "node_modules/xxx/assets",  //这样就可以使用它的资源
          "output": "assets"
      }
],
"styles": [
        "src/styles.scss",
        "node_modules/xxx/theme/style.scss" //映入主题css
  ],

****** 注意:

  1. lib 每加一个组件 要在库的 public-api 下进行export 否则打包好的lib不能使用该组件,组件进行更新或添加,要再次执行npm run package来更新项目内的应用
  2. lib默认样式文件好像是 .css,所以可以在全局 angular.json下Lib自己库属性添加:
projects{
 "lib-xxx": {
   "schematics": {
       "@schematics/angular:component": {
         "style": "scss"
     }
    }
  }
}
上一篇下一篇

猜你喜欢

热点阅读