2017-09-13 57 views
2

我有一个TypeScript项目,我作为NPM模块发布。编译项目的输出位于目录{mymodule}/dist/src/...,这意味着当我发布时,NPM模块也采用上述文件结构。如何拼合发布的NPM模块的文件结构

这样做的缺点是,当单个模块需要被需要的,它应该是这样的:

var individualModule = require('/dist/src'); 

我想扁平化发布的模块,其中发布的模块中的文件将输出是{mymodule}/...代替{mymodule}/dist/src/...

回答

1

在我看来这样做的正确的方式,这是故意从你的包通过在根文件module.exports(或import/export)暴露模块。

const exposableOne = require('/dist/src/ex-1.js'); 
const exposableTwo = require('/dist/src/ex-2.js'); 

// ... 

module.exports = { mymodule, exposableOne, exposableTwo }; 

你可以在主Express framework file看看 - 他们在做几乎使用exports.指令同样的事情。

不完全是TypeScript的东西,但想法很常见。

UPDATE:

如果你真的需要做到不通过require/exports结合,比你可以使用符号连接方式。我不确定这个选项在所有平台上都能正常工作,但是例如,您可以在GitHub上检查solved issuethis repository。后者中的aliases目录包含符号链接到recipes目录模块的文件。

+0

这实际上描述了我目前的设置,但不是我想要的设置。使用这个设置,使用我的库的代码将不得不做类似于'var mylib = require('mylib').exposedableOne' ...但这不是我想要的,我希望可以使用类似于'var exposableOne = require('mylib/exposableOne')' – dade

+0

@dade:请参阅答案的更新。 – Nevertheless