我们希望使用带有Angular 4 / Typescript和NPM的Rollup 我们公司内有以下要求:
使用Typescript / Javascript / NPM / Rollup实现此目的的最佳方法是什么? 我们将使用ES2015语法转换为commonJS语法。
答案 0 :(得分:2)
我不认为汇总有类似于webpack dll plugin的东西,所以,我的回答可能看似无关,但我认为你可以把它作为一个很好的起点,并开始在汇总中寻找类似的东西。
生活在CDN中的图书馆:
DLL
及其对应的DLL Reference
,其中详细描述了如何要求导出的模块。https://cdn.mydomain.com/<libraryName>/<version>/<libraryName>.{js,json,d.ts}
(请求者应添加?<cacheBustingUID>
以避免客户端缓存问题)。除了正常版本控制之外,我还建议您为latest
字段使用关键字 version
,这样可以实现指向最新版本的always true path
捆绑包的版本:(https://cdn.mydomain.com/foo/1.0.0/foo.{js,json,d.ts}
和https://cdn.mydomain.com/foo/latest/foo.{js,json,d.ts}
)。module.exports = env => {
const libs = ((name, version, exts) => (
exts.map(ext => `https://cdn.mydomain.com/${name}/${version}/${name}.${ext}`)
))('foo', 'latest', ['js', 'd.ts', 'json'])
return Promise
.all(libs.map(fetch))
.then([library, definitions, DLLReference] => {
// what to do?
// you can also inject the dynamic paths through `webpackDefinePlugin`
})
}
答案 1 :(得分:1)
解决方案过于复杂。 创建这些JS库的团队应该在URL后面放置一个包。 团队应该放置该URL,并且应该在这些捆绑包上启用eTag缓存,以便用户始终拥有最新版本。如果部署了新版本的捆绑包,http / 1客户端将自动重新下载捆绑包。
用户必须自己设置URL或者使用json文件的机制设置信息驻留在json文件中(如清单)。
应用程序的开发人员可以通过npm接收包含框架库所有类型的d.ts文件。您不需要导入模块,因为它是一个远程URL。因此,您不需要导入任何内容,因为它可以保证因脚本标记而引用该库。