Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 如何从src(源代码)为lib(模块)和dist(浏览器)编译npm包?_Javascript_Node.js_Npm_Babeljs - Fatal编程技术网

Javascript 如何从src(源代码)为lib(模块)和dist(浏览器)编译npm包?

Javascript 如何从src(源代码)为lib(模块)和dist(浏览器)编译npm包?,javascript,node.js,npm,babeljs,Javascript,Node.js,Npm,Babeljs,我正在用JavaScript编写一个小类对象,我希望它既能用于节点应用程序,也能用作独立的浏览器JavaScript文件 我想我已经找到了一个解决办法,但我不确定这是不是应该的 让我试着解释一下目录的外观 好的,我的主文件位于一个名为src/index.js的目录中。 该文件由一个简单的ES6类组成,我使用ES6导出(在AirBnb使用导入/导出之后)导出该类 好的。所以这段代码不会在浏览器中运行,因为浏览器不支持“导出默认值”,而且它是ES6,所以我应该使用Babel将它传输到ES5 但是使用

我正在用JavaScript编写一个小类对象,我希望它既能用于节点应用程序,也能用作独立的浏览器JavaScript文件

我想我已经找到了一个解决办法,但我不确定这是不是应该的

让我试着解释一下目录的外观

好的,我的主文件位于一个名为src/index.js的目录中。 该文件由一个简单的ES6类组成,我使用ES6导出(在AirBnb使用导入/导出之后)导出该类

好的。所以这段代码不会在浏览器中运行,因为浏览器不支持“导出默认值”,而且它是ES6,所以我应该使用Babel将它传输到ES5

但是使用Babel with--presets=es2015不会删除“导出默认值”,因此浏览器仍然会抛出错误。所以我用一个名为“replace”的包解决了这个问题,它只需在使用Babel传输字符串之前搜索并替换该字符串

在my package.json中,它看起来像这样:

"build:dist": "babel src -d dist --no-babelrc && replace 'export default ' '' dist/index.js && babel dist -d dist --presets=es2015",
所以基本上先移动文件,然后删除“导出默认”行,然后传输它。。。这很有效

对于lib目录,我执行以下操作:

"build:lib": "babel src -d lib --plugins=add-module-exports,transform-es2015-modules-commonjs",
因此,基本上是移动文件并进行传输,添加“模块导出”并将其放入“commonjs”模块中

这很有效。。。但这真的不像是一种方式吗?我尝试过使用Browserify、Webpack等,但在这样做时,我似乎无法从类中启动新对象?它给我一条错误消息,说“newperson()”未定义或类似于此

我该如何以简单的ES6风格编写源代码,将其传输到浏览器中使用和节点使用,同时能够拥有如下API:“var person=new person();”

实际上,我的问题可能更倾向于:如何将src/index.js转换为浏览器和节点兼容的文件


非常感谢

我想这正是你所需要的我在谷歌搜索时遇到的。但是看这个例子(),我不明白如何从UMD启动一个新对象?
"build:lib": "babel src -d lib --plugins=add-module-exports,transform-es2015-modules-commonjs",