首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将ES6编写的模块发布到NPM?

如何将ES6编写的模块发布到NPM?
EN

Stack Overflow用户
提问于 2015-04-20 10:25:07
回答 10查看 41.5K关注 0票数 161

我正要把一个模块发布到NPM,这时我想用ES6重写它,既要面向未来,又要学习ES6。我已经使用Babel转换成ES5,并运行测试。但我不确定该怎么做:

  1. 我是否要转换生成的/out文件夹并将其发布到NPM?
  2. 我是否要在Github存储库中包含result文件夹?
  3. 还是要维护两个存储库,一个包含针对Github的ES6代码+ gulp脚本,另一个包含针对NPM的已转换的结果+测试?

简而言之:我需要采取哪些步骤来将用ES6编写的模块发布到NPM,同时仍然允许人们浏览/派生原始代码?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2015-04-20 10:32:51

到目前为止,我看到的模式是将es6文件保存在src目录中,并在npm的预发布到lib目录中构建您的内容。

您将需要一个类似于.gitignore的.npmignore文件,但忽略src而不是lib

票数 89
EN

Stack Overflow用户

发布于 2015-11-29 04:46:10

我喜欢José的回答。我注意到已经有几个模块遵循了这个模式。下面是你可以轻松地用Babel6实现它的方法。我在本地安装babel-cli,所以如果我改变我的全局babel版本,构建就不会中断。

.npmignore

代码语言:javascript
复制
/src/

.gitignore

代码语言:javascript
复制
/lib/
/node_modules/

安装Babel

代码语言:javascript
复制
npm install --save-dev babel-core babel-cli babel-preset-es2015

package.json

代码语言:javascript
复制
{
  "main": "lib/index.js",
  "scripts": {
    "prepublish": "babel src --out-dir lib"
  },
  "babel": {
    "presets": ["es2015"]
  }
}
票数 83
EN

Stack Overflow用户

发布于 2015-09-19 23:04:38

@Jose是对的。将ES6/ES2015发布到NPM没有什么问题,但这可能会带来麻烦,特别是如果使用您的软件包的人正在使用Webpack,例如,因为出于性能原因,通常人们在使用babel进行预处理时会忽略node_modules文件夹。

因此,只需使用gulpgrunt或简单的Node.js来构建一个lib文件夹,即ES5。

下面是我的build-lib.js脚本,我将其保存在./tools/中(这里没有gulpgrunt ):

代码语言:javascript
复制
var rimraf = require('rimraf-promise');
var colors = require('colors');
var exec = require('child-process-promise').exec;

console.log('building lib'.green);

rimraf('./lib')
    .then(function (error) {
        let babelCli = 'babel --optional es7.objectRestSpread ./src --out-dir ./lib';
        return exec(babelCli).fail(function (error) {
            console.log(colors.red(error))
        });
    }).then(() => console.log('lib built'.green));

最后一个建议:你需要在你的中添加一个.npmignore。如果npm publish找不到这个文件,它将改用.gitignore,这会给你带来麻烦,因为通常你的.gitignore文件会排除./lib并包含./src,这与你发布到NPM时想要的正好相反。.npmignore文件的语法与.gitignore (AFAIK)基本相同。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29738381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档