npm publish / typescript在使用我的npm打字稿包时如何避免难看的导入?

时间:2017-02-10 17:02:25

标签: angular typescript npm-publish

我刚刚使用Angular 2(打字稿)了一段时间,非常抱歉,如果我的问题是如此noop :(

我将第一个包发布到npm,如下所示

项目结构

lib
|--banana
   |--b.js
   |--b.d.ts
|--coconut
   |--c.js
   |--c.d.ts
src
|--banana
   |--b.ts
|--coconut
   |--c.ts
gulpfile.ts
package.json
tsconfig.json
typings.json

的package.json

"name": "XXX",
  "main": "lib/",
  "typings": "lib/",
  "files": [
    "lib/"
  ]

tsconfig.json

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "module": "commonjs",
        "declaration": true,
        "outDir": "lib/",
        "types": [
            "core-js"
        ]
    }
}

我成功地将它发布到npm,然后我通过

在一个angular-cli项目中使用它
npm install my_package --save

问题是在消费项目中,我只能通过绝对路径导入我的包的类,即

import {Banana} from './../../node_modules/my_package/lib/banana/b'

我在发布我的软件包的方式上尝试了一些更改,但它仍未按预期工作。

那么,请帮助我说明我在发布包裹的方式或消费包裹的方式中遗漏的一点?

修改
如果我导入如下:

import {Banana} from 'XXX';

我收到此错误:

ERROR in Error encountered resolving symbol values statically. Could not resolve XXX relative to /Users/john/Documents/workspace/consuming-npm/src/app/app.module.ts., resolving symbol AppModule in /Users/john/Documents/workspace/consuming-npm/src/app/app.module.ts, resolving symbol AppModule in /Users/john/Documents/workspace/consuming-npm/src/app/app.module.ts  

ERROR in ./src/app/app.module.ts
Module build failed: Error: /Users/john/Documents/workspace/consuming-npm/src/app/app.module.ts (18,33): Cannot find module 'XXX'.)

这是[consume-npm]的结构: enter image description here

我认为问题在于我发布我的npm包的方式,但仍然不知道它来自哪里:(

1 个答案:

答案 0 :(得分:1)

在package.json中,更新主脚本:

"main": "lib/banana/b"

然后,您可以使用您在package.json(上面的示例代码中的XXX)中指定的名称导入它。

import {Banana} from "XXX";