如何将现有的 CRA 应用程序发布到 npm(any) 存储库?

How to publish existing CRA application to npm(any) repository?

我有一个工作应用程序,包含多个使用 create-react-app 创建的组件,每个组件本身都是一个单独的应用程序,再次使用 create-react-app 创建。

弹出所有组件,以便我可以将它们集成在一起。

现在,我想将组件发布到 NPM/Private 存储库,但根据 CRA 部署指南,它不支持直接开箱即用地发布基于 CRA 的组件,它建议使用 nwb,但我无法弄清楚如何使用 nwb 发布“现有”组件。

我还查看了其中一种媒体 post,它建议使用 babel-cli 生成 dist/build 文件,但对于某些 babel 配置来说,这是失败的,否则效果很好。(抱歉,目前没有 link,因为我正在 post 从手机上下载。

感谢任何帮助。

你可以使用babel-cli npm package来编译你的react应用程序代码,然后你可以使用npm publish命令发布它,详细步骤如下。

  • 使用 npm install babel-cli 命令在你的 create-react-app 中安装 babel-cli 包。

  • 创建.babelrc文件并添加以下内容以使用babel提供的"react-app"预设。

{
        "presets": [["react-app"]],
}
  • 使用以下代码在package.json中添加distribute命令,此命令将代码从src文件夹编译到dist文件夹。通常,我不会在已发布的库中包含我的测试文件,因此 --ignore 参数会跳过 *spec.js and *test.js 等测试文件,此参数是可选的,如果您想包含,可以删除 --ignore spec.js,test.js在您发布的库中测试文件。 --source-maps 参数包括包含的源文件的源映射:
    "distribute": "set NODE_ENV=production&&babel src --out-dir dist --copy-files --ignore spec.js,test.js --source-maps"
  • 执行命令 npm run distribute 将在 dist 文件夹中生成文件。
  • 在 package.json 中设置 private: false 以供发布
  • 使用以下命令设置分发包的主文件,在我的例子中我直接使用 App.js
"main": "dist/App.js"
  • 添加以下用于发布程序包的代码并提供与存储库相关的详细信息
"publishConfig": {
    "registry": ""    
  } 
  • 您可以使用 npm run publish 命令将您的 React 应用程序源代码作为库分发。