Javascript 发布到NPM和CDN
这是我第一次编写一个非常基本的JavaScript库,现在我打算发布它。我将其作为函数编写,用户只需通过CDN导入JavaScript文件即可。我也打算将其发布到NPM,这样用户也可以将其与JS捆绑包一起使用 我创建了另一个文件来匹配Node.js格式,基本上,我在我的函数之前添加了Javascript 发布到NPM和CDN,javascript,node.js,Javascript,Node.js,这是我第一次编写一个非常基本的JavaScript库,现在我打算发布它。我将其作为函数编写,用户只需通过CDN导入JavaScript文件即可。我也打算将其发布到NPM,这样用户也可以将其与JS捆绑包一起使用 我创建了另一个文件来匹配Node.js格式,基本上,我在我的函数之前添加了module.exports=,一切正常。所以,现在我得到了两个代码基本相同的文件,一个用于CDN,一个用于NPM。有没有办法统一这个,基本上把它合并到同一个文件中 我很想知道这通常是怎么做的。当一个函数被写入作为C
module.exports=
,一切正常。所以,现在我得到了两个代码基本相同的文件,一个用于CDN,一个用于NPM。有没有办法统一这个,基本上把它合并到同一个文件中
我很想知道这通常是怎么做的。当一个函数被写入作为CDN导入时,它是如何转换为节点模块的?创建一个单独的文件是唯一的方法,还是我遗漏了什么?这个问题很容易通过快速的谷歌搜索得到答案,但我认为这是一个有趣且写得很好的问题,因此我在这里转写一些结果,以帮助其他人: 发件人: UMD UMD(通用模块定义)是一个代码块,我们可以使用它来包装我们的库。这段代码可以在前端和节点中使用库 有点像这样:
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['b'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node.
module.exports = factory(require('b'));
} else {
// Browser globals (root is window)
root.returnExports = factory(root.b);
}
}(typeof self !== 'undefined' ? self : this, function (b) {
// Use b in some fashion.
// Just return a value to define the module export.
// This example returns an object, but the module
// can return a function as the exported value.
return {};
}));
你可以阅读更多关于
通常我会建议您使用bundler/build工具来为您实现自动化,并使代码在更多环境中可用
这是一个不错的选择。谢谢!我试着搜索,但我真的不知道到底要搜索什么。我最后搜索了一些东西,比如如何发布到NPM和CDN,保持NPM和CDN之间的代码同步,结果没有帮助。这就是我要找的。非常感谢您抽出时间回复!