我怎样才能用纱线执行垃圾箱?

How can I execute a bin with yarn?

我有以下 package.json,我想 运行 容器“构建”和“运行”:

{
  "name":    "simple-site",
  "version": "0.0.5",
  "license": "MIT",
  "bin": {
    "build": "./bin/build.js",
    "dev":   "./bin/dev.js"
  }
}

我试过:

yarn run build

然后我得到

error Command "build" not found.

我也试过:

yarn build

但同样的事情发生了:

error Command "build" not found.

这可能不是 运行 垃圾箱的正确方法。但话又说回来,用纱线 运行 bins 的正确方法是什么?

你的包没有安装。

当 Yarn(和 NPM)安装您的包时,它会在 node_modules/.bin/ 下添加命令,例如node_modules/.bin/build。 运行 yarn build 会(如果在当前包中没有找到匹配的脚本)在这个 .bin 中寻找 build,然后向上遍历文件系统,寻找对于其他node_modules/.bin/build

如果您的构建脚本只是 运行 在开发特定包时,请将其添加为脚本(参见示例 here)。它或多或少看起来像这样:

{
  "name":    "simple-site",
  "version": "0.0.5",
  "license": "MIT",
  "scripts": {
    "build": "node ./bin/build.js",
    "dev":   "node ./bin/dev.js"
  }
}

不需要添加相对路径:

{
    "name":    "simple-site",
    "version": "0.0.5",
    "license": "MIT",
    "scripts": {
      "build": "build.js",
      "dev":   "dev.js"
    }
}

hashbang 注释指定要用于执行脚本的特定 JavaScript 解释器的路径。

例如./node_modules/.bin中的helloWorld.js:

#!/usr/bin/env node

console.log("Hello world");