【问题标题】:Not able to publish my react components as private npm package无法将我的反应组件发布为私有 npm 包
【发布时间】:2021-02-25 15:04:18
【问题描述】:

我在 npm 上创建了一个新组织,我正在尝试将我的 react 组件发布为一个作用域包,以便我的团队可以在所有其他应用程序内部使用相同的组件。

在运行npm publish 命令时,我得到以下信息

npm ERR! code EPRIVATE
npm ERR! This package has been marked as private
npm ERR! Remove the 'private' field from the package.json to publish it.

npm ERR! A complete log of this run can be found in:

我的 package.json 看起来像这样

{
  "name": "my-package-name",
  "version": "1.0.0",
  "private": true,
  "main": "dist/AllExports.js",
  "module": "dist/AllExports.js",
  "dependencies": {
    "@material-ui/core": "^4.11.2",
    "@material-ui/icons": "^4.11.2",
    "@testing-library/jest-dom": "^5.11.6",
    "@testing-library/react": "^11.2.2",
    "@testing-library/user-event": "^12.4.0",
    "axios": "^0.21.0",
    "package1217721": "^1.2.7",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-hook-form": "^6.13.0",
    "react-redux": "^7.2.2",
    "react-scripts": "4.0.1",
    "redux": "^4.0.5",
    "redux-persist": "^6.0.0",
    "web-vitals": "^0.2.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "set NODE_ENV=production && rm -rf dist && mkdir dist && npx babel src/components --out-dir dist",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "proxy": "http://localhost:5000",
  "devDependencies": {
    "@babel/cli": "^7.12.10",
    "@babel/preset-react": "^7.12.10"
  }
}

.babelrc 文件看起来像这样

//.babelrc
{
  "presets": [
    "@babel/preset-react"
  ]
}

.npmrc 看起来像这样

registry=http://registry.npmjs.org/
scope=myscopename
@myscopename:registry=http://registry.npmjs.org

我也试过了

  • 注销然后重新登录。
  • 卸载 node_modules 然后重新安装。
  • npm 更新了吗
  • 也清除了 npm 缓存

【问题讨论】:

  • 你用的是什么版本的 npm?
  • @JonathanIrwin 我使用的是 6.14.9

标签: reactjs npm node-modules npm-publish


【解决方案1】:

我已经解决了这个问题。我试图使用 .npmrc 来设置范围,但这并没有按照我想要的方式工作。

但是运行命令“npm init --scope=your-scope”完成了这项工作。此命令重建 package.json 文件。我一开始没有运行该命令,因为如果我已经有一个 package.json,我不确定是否需要运行“npm init”。而且我担心它可能会重置我的包的依赖关系,但事实并非如此。它使依赖项保持不变。

【讨论】:

  • 我仍然不确定为什么 .npmrc 中定义的范围不起作用。
【解决方案2】:

将 package.json 文件中的私有字段(第 3 行)设置为 false。

【讨论】:

  • 请检查问题的标题。它特别说“私有 NPM 包”。如果我们将私有字段设置为 false,那么这将成为一个公共包。
猜你喜欢
  • 2018-09-25
  • 2021-06-06
  • 2017-06-25
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2021-01-01
相关资源
最近更新 更多