繁体   English   中英

Parcel 什么都不做,不被识别为命令

[英]Parcel does nothing and is not recognized as a command

我用 npm 安装了 Parcel,一切都安装得很好,没有错误。 我有一个这样的 package.json:

{
    "name": "example",
    "version": "0.1.0",
    "source": "src/index.js",
    "main": "dist/index.js",
    "scripts": {
        "build": "parcel build"
    },
    "devDependencies": {
        "parcel": "^2.0.1"
    }
}

我只是按照网站上的说明进行操作,但是当我运行npm run build它只是说:

附上调试器。 等待调试器断开连接...

然后它返回到命令提示符。 没有触及或创建任何文件。 实际上, parcel在终端中不被识别为命令。 我尝试卸载并重新安装 Parcel,但它仍然不起作用。

我确实在npx parcel build src/index.js取得了一些成功,但这种行为对我来说似乎很奇怪。 看起来它重新安装了 Parcel 并在我的目录中留下了一个 .parcel-cache 文件夹。 它确实产生了一个输出 js,但它对 js 所做的只是将一个全局变量更改为名称中带有一长串数字的变量。 我只想缩小js。 npx 运行该命令后,终端会冻结。 这是正常的吗?

我已经复制了你的例子,一切都按预期运行。 您可能想要再次删除完整的node_modules文件夹和npm i

另外,作为一个干净的测试,关闭浏览器。 我不确定您的开发堆栈/环境是什么,并且可能在 Chrome 中打开了调试器。

顺便说一句,如果没有使用-g标志全局安装parcel,则cli很可能无法识别该命令。 然后它只能通过脚本执行。

看起来您遇到了两个问题 - 实际上正确安装了 Parcel 并在运行它时获得了意外的输出。 对于第一个问题,我无法使用您提供的配置来重现它,除了 Jos Faber 在他的回答中已经提出的建议之外,我没有任何想法。

对于第二个问题 - 当您运行npx parcel ,您期望缩小输出,但没有得到它。 这是因为 package.json 中的"source""main"字段。 这些旨在供库作者使用 - 即人们创建的 npm 包被其他项目使用而不是发送到浏览器。 您(通常)不想最小化您的分布式库代码,因为它会干扰使用它来调试、摇树和最小化应用程序的人的能力,因此默认情况下,parcel 不会这样做。 查看包裹文档

默认情况下,在生产构建(包构建)期间启用优化,库目标除外[强调已添加]。

如果您正在开发 Web 应用程序,您需要从package.json删除"source""main" ,并将您的 cli 命令更改为parcel build src/index.js (parcel 会将输出放入dist文件夹中默认,但如果您想更改它,请使用--dist-dir cli 标志)。

如果您确实想缩小库,您可以通过将目标配置添加到 package.json 来做到这一点:

{
  ...
  "targets": {
    "main": {
      "optimize": true
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM