【问题标题】:angular 2 directive as npm packageangular 2 指令作为 npm 包
【发布时间】:2016-09-28 03:03:34
【问题描述】:

我有一个要在 npm 上发布的指令。我读了the doc here,然后我做了以下事情:

  • 复制从 .ts 文件编译的 .js 文件。 (我没有复制地图文件)
  • 在桌面上新建文件夹并粘贴到那里
  • npm initnpm publish
  • 创建新项目和npm install --save-dev我发布的包

但是当我试图在模块中声明它时它没有找到指令的名称

@NgModule({
  declarations: [
    AppComponent,
    MyDirective //this is not found
  ],

js文件出现在模块文件夹中

【问题讨论】:

    标签: node.js angular npm


    【解决方案1】:

    你导入了import {...} from 'your-package-name/your-main-js';它,对吧?

    这是为 Angular2 创建 npm 包的好指南。

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

    如果你想创建一个组件包,记得内联你的模板/样式!否则你的应用会坏掉..

    或者您可以使用像 https://github.com/ludohenin/gulp-inline-ng2-template 这样的脚本来内联这些模板/样式..

    也许这个 repo 作为起点会有所帮助:https://github.com/mxii/ng2-offclick

    您还可以查看以下资源:

    【讨论】:

    • 你是对的,它的指南很老了.. 但你必须阅读npm stuff .. 在创建一个包之前你应该能够安装 Angular2
    • 你可以以这个 repo 为起点:github.com/mxii/ng2-offclick :)
    • 是的,那是我在阅读教程之前安装的那些软件包,也没有工作。我想我的问题在别的地方,我会继续挖掘,无论如何我都会接受答案
    • 谢谢,但如果有任何问题,尽管问.. 希望 repo 会有所帮助,看看那些 angular2 包的 package.json.. 它不只是一个! ;)
    • @mxii 在您的 offclick 中,您为什么使用 setTimeout(),事件处理应该是同步的。事件侦听器不会被删除,并且任何其他处理程序都会被 stopPropogation 取消。我认为 Angular 不建议直接调用 document。好的包演示都一样:-)
    【解决方案2】:

    以防万一将来有人像我在这里所做的那样苦苦挣扎。

    1. npm 初始化文件夹,使其具有package.json 并添加必要的 devDependencies
    2. 将.ts编译成js
    3. 告诉 npm 忽略 .npmignore 中的 .ts 文件:
     node_modules
     npm-debug.log
     *.ts
     !*.d.ts
    

    我希望我没有遗漏任何内容,无论如何,上述已接受答案中的教程都会有所帮助

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 2018-01-17
      • 2017-06-26
      • 2016-09-11
      • 2017-08-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多