Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发布到NPM和CDN_Javascript_Node.js - Fatal编程技术网

Javascript 发布到NPM和CDN

Javascript 发布到NPM和CDN,javascript,node.js,Javascript,Node.js,这是我第一次编写一个非常基本的JavaScript库,现在我打算发布它。我将其作为函数编写,用户只需通过CDN导入JavaScript文件即可。我也打算将其发布到NPM,这样用户也可以将其与JS捆绑包一起使用 我创建了另一个文件来匹配Node.js格式,基本上,我在我的函数之前添加了module.exports=,一切正常。所以,现在我得到了两个代码基本相同的文件,一个用于CDN,一个用于NPM。有没有办法统一这个,基本上把它合并到同一个文件中 我很想知道这通常是怎么做的。当一个函数被写入作为C

这是我第一次编写一个非常基本的JavaScript库,现在我打算发布它。我将其作为函数编写,用户只需通过CDN导入JavaScript文件即可。我也打算将其发布到NPM,这样用户也可以将其与JS捆绑包一起使用

我创建了另一个文件来匹配Node.js格式,基本上,我在我的函数之前添加了
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之间的代码同步,结果没有帮助。这就是我要找的。非常感谢您抽出时间回复!