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