我使用打字稿制作的模块,我没有将其编译为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之前进行编译,它可以正常工作。我只是想知道:我必须这样做吗?
答案 0 :(得分:2)
作为一般的最佳做法,您应该发布您的包裹'二进制文件'到npm。使用TypeScript,这意味着已转换的.js
文件。
这允许您的程序包的用户使用它而不会构建它的额外复杂性。也就是说,二进制文件可以直接使用'。
也就是说,如果您还包含(TS)源,您仍然可以在项目中以您喜欢的方式编译它们,这取决于您的包。换句话说,仅仅因为您提供二进制文件是为了方便,最终用户可以选择直接在他们的项目中使用二进制文件。