转译 JS 代码库的最佳实践:包含在 git 中还是在安装过程中生成?

Best practices with transpiled JS codebase: included in git or generated during installation process?

我正在为以下对象创建一个 JS 库(使用 Babel 和 Webpack):

是否建议在代码库中包含来自 Babel 和 webpack 的转译文件? 因为,至少对于后端而言,安装该库的另一个项目可能没有 Babel(特别是为了避免像 SyntaxError: Cannot use import statement outside a module

这样的问题

我想在 NPM 安装过程中生成这些分发文件,但我认为将 babel 和 webpack 从 devDependencies 移动到 dependencies 不是一个好主意 packages.json.

项目结构是这样看的:

project-directory
|--dist
|  |--index.js
|--node_modules
|--src
|  |--index.js
|--package.json
|--.babelrc

玩过npm publish后,我觉得我找到了正确的方法。

代码库应包含dist/目录(排除在.gitignore中)。

发布时,npm publish 将创建一个包,其中包含您的 dist/ 目录(如 git,您有一个 .npmignore 来排除您不想要的元素你的包裹)。

packages.json 中,main 属性 应该指向主要的转译 .js 文件。 添加 prepack 脚本将确保您的转译代码在发布新包之前是最新的。

{
  "main": "dist/index.js",
  "module": "src/index.js",
  "scripts": {
    "prepack": "npm run build",
    "build": "babel src --out-dir dist"
  },
  "devDependencies": {
    "@babel/cli": "^7.7.5",
    "@babel/core": "^7.7.5",
    "@babel/node": "^7.7.4",
    "@babel/preset-env": "^7.7.6"
  }
}