node_modules中的typescript模块是否已经编译

时间:2017-04-05 11:59:41

标签: javascript typescript typescript2.0

我使用打字稿制作的模块,我没有将其编译为javascript,因为我喜欢我的主要应用程序。 因此,我有这样的文件结构:

my-project
---node_modules
------my-module
---------index.ts
---src
------myfile.ts

myfile.ts

import { x } from 'my-module';

tsconfig

{
    "compilerOptions": {
        "target": "es5",
        "lib": ["es6", "dom"],
        "types": ["reflect-metadata"],
        "module": "commonjs",
        "moduleResolution": "node",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": false,
        "sourceMap": true,
        "declaration": false,
        "outDir": "out"
    },
    "exclude": [
        "node_modules",
        "out"
    ]
}

Visual Studio代码没有抱怨,它找到了模块并给了我智能。但是当我运行程序时,我得到了:

  

错误:无法找到模块' my-module'

虽然它是我导入的界面时效果很好。因此我假设它是因为打字稿不跟随导入并编译它们,我认为它会这样做。

我是否必须先将我的打字稿模块编译为javascript,然后再将其发布到npm,或者我可以设置一个不需要的设置吗?

PS:如果我在发布到npm之前进行编译,它可以正常工作。我只是想知道:我必须这样做吗?

1 个答案:

答案 0 :(得分:2)

作为一般的最佳做法,您应该发布您的包裹'二进制文件'到npm。使用TypeScript,这意味着已转换的.js文件。

这允许您的程序包的用户使用它而不会构建它的额外复杂性。也就是说,二进制文件可以直接使用'。

也就是说,如果您还包含(TS)源,您仍然可以在项目中以您喜欢的方式编译它们,这取决于您的包。换句话说,仅仅因为您提供二进制文件是为了方便,最终用户可以选择直接在他们的项目中使用二进制文件。