Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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包_Javascript_Npm_Webpack_Gulp_Package - Fatal编程技术网

Javascript 从同一来源构建分布式和NPM包

Javascript 从同一来源构建分布式和NPM包,javascript,npm,webpack,gulp,package,Javascript,Npm,Webpack,Gulp,Package,我经常制作小型开源工具,我不想限制我的用户。我的软件包通常只有一个功能,因此我希望我的用户能够获得: 他们可以通过脚本标记中的src添加的JS文件。该脚本应该添加我的函数,以便他们可以在下面的脚本中调用它。对于根本不想使用包管理器的用户非常有用: 它有点工作,但我想知道是否有更复杂和可靠的解决方案 如何实现这一点?听起来您可能希望将项目打包为UMD Rollup可以将UMD作为输出,并且比webpack或browserify(尤其是对于小型单函数库)稍微小一些 isEven.mjs 函数isE

我经常制作小型开源工具,我不想限制我的用户。我的软件包通常只有一个功能,因此我希望我的用户能够获得:

  • 他们可以通过
    脚本
    标记中的
    src
    添加的JS文件。该脚本应该添加我的函数,以便他们可以在下面的脚本中调用它。对于根本不想使用包管理器的用户非常有用:
  • 它有点工作,但我想知道是否有更复杂和可靠的解决方案


    如何实现这一点?

    听起来您可能希望将项目打包为UMD

    Rollup可以将UMD作为输出,并且比webpack或browserify(尤其是对于小型单函数库)稍微小一些

    isEven.mjs

    函数isEven(x){
    返回(x%2)==0&&x!==0;
    }
    出口{
    伊塞文
    };
    
    $rollup isEven.mjs--format=umd--name=isEven
    
    将导致

    (功能(全局,工厂){
    导出类型==“对象”&&typeof模块!==“未定义”?工厂(导出):
    typeof define=='function'&&define.amd?define(['exports'],工厂):
    (global=typeof globalThis!='undefined'?globalThis:global | | self,factory(global.isEven={});
    }(此功能(导出){‘严格使用’;
    函数isEven(x){
    返回(x%2)==0&&x!==0;
    }
    exports.isEven=isEven;
    defineProperty(导出,'.\u esModule',{value:true});
    })));
    

    我想这正是你想要的。

    我解决了这个问题,并为这个确切的任务创建了一个模板回购


    您可以从该模板创建您的repo,将您的库实现为带有ES模块的NPM包,然后在推送时将创建dist文件夹,并且将有以您的库命名的分布式js文件。您的用户只需将其添加到脚本标记中,您的库就会出现在全局命名空间中。

    很好,我不知道!我也可以将mjs模块转换为ES6模块吗?感谢您为我介绍汇总。我解决了这个问题:
    <script src="https://amazingCDN.com/isEven.js"></script>
    <script>
      isEven()
    </script>
    
    echo 'export default ' | paste -d'\0' - src.js > module.js