当前位置: 首页 > 知识库问答 >
问题:

发布到NPM和CDN

赏星河
2023-03-14

这是我第一次编写一个非常基本的JavaScript库,现在我打算发布它。我将它作为一个函数编写,用户可以通过CDN简单地导入JavaScript文件。我也打算把它发布到NPM,这样用户就可以把它和JS捆绑程序一起使用了。

我创建了另一个文件来匹配node.js格式,基本上,我在函数之前添加了module.exports=,这一切都起作用了。所以,现在我得到了两个代码基本相同的文件,一个用于CDN,一个用于NPM。有没有办法把这个统一起来,基本上都合并在同一个文件里?

我真的很想知道这通常是怎么做的。当一个函数被写入以作为CDN导入时,它如何被转换成节点模块?创建一个单独的文件是唯一的方法,还是我遗漏了什么?

共有1个答案

丌官哲彦
2023-03-14

这个问题很容易通过谷歌搜索得到答案,但我认为这是一个有趣且写得很好的问题,所以我在这里转录一些结果来帮助其他人:

从这篇博文来看:

UMD

UMD(Universal Module Definition)是一个代码块,我们可以用来包装我们的库。这段代码使得在前端和节点中都可以使用库。

它看起来是这样的:

    (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 {};
    }));

你可以在这里阅读更多关于UMD的内容。

通常,我会建议您使用绑定程序/构建工具来为您自动化这一点,并使代码在更多的环境中可用。

Webpack是一个很好的选择。

 类似资料:
  • 本文向大家介绍Vue组件库发布到npm详解,包括了Vue组件库发布到npm详解的使用技巧和注意事项,需要的朋友参考一下 制作了一套自己的组件库,并发布到npm上,项目代码见https://github.com/hamger/hg-vcomponents 前期准备 有一个npm账号 安装了vue-cli 搭建项目 目录结构 内部代码详见 GitHub,如果对你有所帮助,给个star吧 。 项目配置

  • 我正在运行Nexus3.0.1-01,并使用它来托管Maven存储库和NPM注册中心。对于NPM,我有一个npmjs.org的本地镜像,一个本地NPM注册表和一个组合了两者的组... 我一直在npm内部使用它,在那里我可以使用npm-public组作为我的注册表,这一直工作良好。所以,我可以使用Nexus镜像NPMJ。 下一步是使用本地编写的npm模块,并将它们发布到npm-releases(在我

  • 本文向大家介绍vue2.0+ 从插件开发到npm发布的示例代码,包括了vue2.0+ 从插件开发到npm发布的示例代码的使用技巧和注意事项,需要的朋友参考一下 vue: V2.5.11 此篇尽量详细,清楚的讲解vue插件的开发到npm的发布,想想将你自己做的东西展示给广大“网民”,心里还是有点小激动的...…^_^ 先上一下插件效果图------github传送门 下面我们就来说说详细做法: 1.

  • 如何发布npm模块 那么我们来发布一个吧,顺便学习一下如何发布npm模块 登陆npm 发布 ➜ require-dictory git:(master) ✗ nrm use npm Registry has been set to: https://registry.npmjs.org/ ➜ require-dictory git:(master) ✗ npm login Usern

  • 问题内容: 当我考虑在ES6中重写它时,我打算将其发布给NPM,以适应将来的需求并学习ES6。我已经使用Babel移植到ES5,并运行测试。但是我不确定如何进行: 我是否要转换并把生成的/ out文件夹发布到NPM? 我是否将结果文件夹包含在我的Github存储库中? 还是我要维护2个存储库,一个使用ES6代码+ gulp脚本(适用于Github),另一个使用转换结果+测试(NPM)? 简而言之:

  • 本文向大家介绍发布一款npm包帮助理解npm的使用,包括了发布一款npm包帮助理解npm的使用的使用技巧和注意事项,需要的朋友参考一下 npm 在前端工程化中扮演着不可或缺的角色,前端工程师每天通过npm安装项目依赖,通过npm发布自己的包,更新包,通过npm 脚本运行开发环境,打包等。 平时专注于实现业务,一直没有去了解一款包的发布流程,忙里偷闲,今天就体验下编写并发布一个package的过程,