遵循 José 和 Marius 的方法,(2019 年更新了 Babel 的最新版本):将最新的 JavaScript 文件保存在 src 目录中,并使用 npm 的prepublish
脚本构建并输出到 lib 目录。
.npmignore
/src
.gitignore
/lib
/node_modules
安装 Babel(在我的例子中是 7.5.5 版)
$ npm install @babel/core @babel/cli @babel/preset-env --save-dev
包.json
{
"name": "latest-js-to-npm",
"version": "1.0.0",
"description": "Keep the latest JavaScript files in a src directory and build with npm's prepublish script and output to the lib directory.",
"main": "lib/index.js",
"scripts": {
"prepublish": "babel src -d lib"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/cli": "^7.5.5",
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5"
},
"babel": {
"presets": [
"@babel/preset-env"
]
}
}
我有src/index.js
它使用箭头函数:
"use strict";
let NewOneWithParameters = (a, b) => {
console.log(a + b); // 30
};
NewOneWithParameters(10, 20);
这是GitHub 上的 repo。
现在您可以发布包:
$ npm publish
...
> latest-js-to-npm@1.0.0 prepublish .
> babel src -d lib
Successfully compiled 1 file with Babel.
...
在将包发布到 npm 之前,您会看到lib/index.js
已经生成,并被转译为 es5:
"use strict";
var NewOneWithParameters = function NewOneWithParameters(a, b) {
console.log(a + b); // 30
};
NewOneWithParameters(10, 20);
[Rollup 打包器的更新]
正如@kyw 所问的,您将如何集成 Rollup 捆绑器?
首先,安装rollup
并rollup-plugin-babel
npm install -D rollup rollup-plugin-babel
二、rollup.config.js
在项目根目录下创建
import babel from "rollup-plugin-babel";
export default {
input: "./src/index.js",
output: {
file: "./lib/index.js",
format: "cjs",
name: "bundle"
},
plugins: [
babel({
exclude: "node_modules/**"
})
]
};
最后,更新prepublish
中package.json
{
...
"scripts": {
"prepublish": "rollup -c"
},
...
}
现在可以运行了npm publish
,在发布包到npm之前,你会看到已经生成了lib/index.js,转译为es5:
'use strict';
var NewOneWithParameters = function NewOneWithParameters(a, b) {
console.log(a + b); // 30
};
NewOneWithParameters(10, 20);
注意:顺便说一下,@babel/cli
如果您使用的是 Rollup 捆绑器,则不再需要。您可以安全地卸载它:
npm uninstall @babel/cli