美文网首页
Angular 自己的Library

Angular 自己的Library

作者: 小米和豆豆 | 来源:发表于2021-03-17 20:21 被阅读0次

    //仅学习记录使用

    Angular 自己的Library

    • ng new projectName 创建一个新的项目
    • ng g library libraryName --prefix xxx #libraryNamelib库名称 #xxx : 组件前缀(如 nz-zorro 的组件前都是 nz-xxx)
    • 在宿主工程的package.json的scripts中加入以下几个命令: 可以自己拓展命令
    "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"
     ...
    }
    
    • 在宿主根目录下执行npm run package, 此时会打包Lib库, 并安装到宿主工程中
    • 在宿主工程的app.module.ts中引入Lib库(import { xxxModule } from 'xxx'),导入模块后 并在app.component.html中使用模块里的组件
    • angular.json文件中增加以下内容, 让宿主工程可以使用Lib库中的静态资源文件和全局样式
    "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"
         }
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:Angular 自己的Library

          本文链接:https://www.haomeiwen.com/subject/xoeucltx.html