【问题标题】:How to create a ready to publish to npm angular 2 library如何创建准备发布到 npm angular 2 库
【发布时间】:2017-03-08 18:33:37
【问题描述】:

我会非常具体,并将我的问题分成几个点。

1.我想总体实现的目标:

创建一个准备发布到 npm angular 2 样板库(最新版本)

2。什么不起作用:

前面在 stackoverflow 中引用的以下两个教程在许多方面都无法正常工作,或者已经过时或不太清楚。此外,在互联网上,关于如何准备有效且可工作的 angular 2 库的信息比信息更混乱。

http://blog.angular-university.io/how-to-create-an-angular-2-library-and-how-to-consume-it-jspm-vs-webpack/

https://medium.com/@OCombe/how-to-publish-a-library-for-angular-2-on-npm-5f48cdabf435#.c3yuzcrgj

3.我想具体实现的目标:

我想知道步骤并在此总结什么是必不可少的 从头开始在最新的 angular 2 版本中创建库。带代码 例子。愿它为未来的所有 stackoverflowers 服务 工作样板。

我的建议是写下一份尽可能短的清单,并附上代码示例。

【问题讨论】:

    标签: angular typescript npm


    【解决方案1】:

    如果我很好理解您的问题,您想创建一个组件并将其作为库发布。

    1。创建组件

    您需要创建 foo.component.ts 文件及其 html 模板。你会更喜欢内联 CSS(在 @Component 的 styles 属性中)。

    !!!不要忘记在@Component 中设置moduleId: module.id 以使用相对路径将模板链接到您的组件!!!

    2。编译代码(一旦你测试过,测试部分是隐式的)

    您需要使用tsc 和tsconfig 编译您的组件,应该如下所示:

    {
      "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "target": "es5",
        "sourceMap": true,
        "inlineSources": false,
        "declaration": false,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "stripInternal": true,
        "skipLibCheck": true
      },
      "files": [
        "index.ts",
        "typings/index.d.ts"
      ]
    }
    

    3。发布到 npm

    首先,创建你的 .npmignore 文件,这里是一个例子:

    .idea
    
    *.ts
    !*.d.ts
    
    /typings.json
    /typings/
    /node_modules/
    /.gitignore
    /.npmignore
    /.travis.yml
    
    /test
    /karma.conf.js
    /karma-test-shim.js
    
    /rollup.config.js
    /rollup-min.config.js
    
    /systemjs.config.js
    
    /tsconfig.json
    /tsconfig-build.json
    

    如果您没有使用 JetBrains IDE,请删除 .idea 条目。

    然后在package.json中设置您的发布配置:

    "publishConfig": {
        "registry": "https://registry.npmjs.org/"
    }
    

    一切准备就绪后,您可以npm publish。

    示例

    angular2 的外部库的一个很好的例子可以在这里找到: https://github.com/noemi-salaun/ng2-logger/

    或者在这里获取更新的,包括 webpack 兼容性: https://github.com/kaiu-lab/serializer

    它不是一个组件,但整个发布配置、捆绑和测试逻辑都做得很好。

    【讨论】:

    • 非常感谢您的准确回答:)。我将很快对其进行测试并提供反馈:)。
    • 您是记录器的创建者吗?我喜欢这个想法,但仅供参考,您也可以在控制台中使用错误、警告等,并且您可以在构建时删除控制台表达式。
    • 不,我不是,它是我的一个朋友。但是,是的,我们知道您可以删除控制台等,我们想要这个记录器的主要原因是能够轻松连接不同的记录器逻辑(例如,记录到用于监控目的的 api)。
    猜你喜欢
    • 2017-01-23
    • 2019-06-25
    • 2019-05-04
    • 1970-01-01
    • 2022-08-19
    • 2017-09-08
    • 1970-01-01
    • 2018-05-25
    • 2021-08-01
    相关资源
    最近更新 更多