gpt4 book ai didi

javascript - PNPM - 启动新项目未按预期进行

转载 作者:行者123 更新时间:2023-12-02 23:04:20 25 4
gpt4 key购买 nike

我正在尝试使用集中式包管理器 (pnpm),而不是普通的 npm,因为我喜欢硬盘上有空间。我只是想启动该项目并遇到困难,网上几乎没有什么可以真正指导我使用这个包管理器启动一个项目。有谁有让它适用于 React/React Native 的经验吗?

任何想法都将受到欢迎。

我尝试了两种不同的设置方法:

  • 使用 pnpx create-react-app my-app 创建了一个新项目。这正是 npx create-react-app 所做的,其中包括安装超过 200MB 的模块,我已经在我的系统上安装了一百万次了。我检查了 node_modules 文件夹,没有一个文件是硬链接(hard link),它们本身就是模块。

  • 创建了一个没有辅助命令的新项目(即 touch App.js、index.js、index.html 等),然后 pnpm i React... 等。这在时尚,所有节点包都链接到我的全局存储(在 ~/中),但是当我尝试 pnpm start 让我的服务器运行时,我收到错误:找不到模块.../my-project/server.js。我没有 server.js 文件,但话又说回来,使用常规 npm 和 npx 命令,我从来不需要一个文件。

我已经使用pnpm i server来看看是否可以让它以这种方式工作。没有什么。我对 React 比较陌生,所以我确信我做了一些荒谬的事情,但是无论我有多初级,我都遵循了 official instructions而且它们对我没有用。

pnpm 调试文件内容如下:

{
"0 debug pnpm:scope": {
"selected": 1,
"workspacePrefix": null
},
"1 error pnpm": {
"message": {
"errno": 1,
"code": "ELIFECYCLE",
"pkgid": "my-cv@1.0.0",
"stage": "start",
"script": "node server.js",
"pkgname": "my-cv"
},
"err": {
"name": "Error",
"message": "my-cv@1.0.0 start: `node server.js`\nExit status 1",
"code": "ELIFECYCLE",
"stack": "Error: my-cv@1.0.0 start: `node server.js`\nExit status 1\n at EventEmitter.<anonymous> (/usr/local/lib/node_modules/pnpm/lib/node_modules/@zkochan/npm-lifecycle/index.js:302:16)\n at EventEmitter.emit (events.js:200:13)\n at ChildProcess.<anonymous> (/usr/local/lib/node_modules/pnpm/lib/node_modules/@zkochan/npm-lifecycle/lib/spawn.js:55:14)\n at ChildProcess.emit (events.js:200:13)\n at maybeClose (internal/child_process.js:1021:16)\n at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)"
}
}
}

更新:所以我已经设法让它工作了,我想......我掌握了 npx create-react-app 中使用的所有必需的包并将它们放在在执行 pnpm i 之前在 package.json 中。然而,除了想知道这是否可能而不需要那么麻烦之外,查看文件结构,除了我在 node_modules 文件夹中的别名之外,我似乎还有一个隐藏文件夹 .registry.npmjs。组织。这与我的系统根目录中的完全一样,我认为它是中央存储。

TLDR:看起来尽管 pnpm 似乎可以工作(别名是在 node_modules 文件夹内创建的),但我的系统上仍然有重复的包。谁能证实情况是否如此?

最佳答案

编辑时间:2023 年 8 月

我最近发现了一个更好的方法,用于实例化 React Typescript 项目:看看 github 中的这个存储库:https://github.com/beenotung/create-react-ts-template

简而言之,只需运行 README 文件中的脚本,您将拥有一个 Shiny 的新 React 项目,并且没有任何 NPM malarkey。

我想如果你坚持使用vanilla JS,修改模板并不难。

原始答案

我意识到这是一个老问题了......但它仍然没有得到充分解决(理想情况下,create-react-app应该有一个开关,允许它本地使用pnpm......但那是另一天) .

我的解决方案有点乏味,但有效。首先,像平常一样创建你的 React 应用程序:

pnpx create-react-app my-app --template typescript

等待 npm 所需的时间来下载您已经拥有的约 350mb 的内容。接下来,运行以下命令(假设是 Linux):

cd my-app
rm -rf node_modules/
pnpm i

根据重复使用的模块数量,您将节省高达 350MB 的磁盘空间。

关于javascript - PNPM - 启动新项目未按预期进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com