首页 > 解决方案 > @nrwl/workspace:run-commands:尝试通过自定义目标运行 node_module 脚本时权限被拒绝

问题描述

我刚刚开始使用 Nx,并且有一个现有的基于 lerna 的 Angular 项目,其中包含一堆独立构建并发布到 NPM 的包。

在许多这些包中,我们有自定义构建脚本,它们可以像这样运行:

  "scripts": {
    "build": "node --max_old_space_size=10000 ../../node_modules/@angular/cli/bin/ng build ng-generic-components && npm run bundle-styles",
    "bundle-styles": "npm run bundle-style-utilities && npm run bundle-theme && npm run bundle-compatible",
    "bundle-theme": "../../node_modules/scss-bundle/dist/bundle-cli.js -c org-theme.bundle-config.json",
    "bundle-style-utilities": "../../node_modules/scss-bundle/dist/bundle-cli.js -c utilities.bundle-config.json",
    "bundle-compatible": "../../node_modules/scss-bundle/dist/bundle-cli.js -c compatible.bundle-config.json",

如您所见,这是运行一堆样式预处理器脚本,以便我们可以在最终包中包含一些全局样式。

所以我的问题是,我怎样才能让 Nx 库构建器运行像上面这样的额外步骤作为其打包的一部分?

我在 Nx 文档中看到了关于自定义构建器和执行器的部分,所以我想知道这些是否对我有帮助,但我并不完全确定。

我也遇到了@vsavkin的这个答案

这似乎是我需要的东西,所以我为我的图书馆尝试了它,如下所示:

"base-build": {
    "builder": "@nrwl/angular:package",
    "outputs": [
        "dist/libs/ng-generic-components"
    ],
    "options": {
        "project": "libs/ng-generic-components/ng-package.json"
    },
    "configurations": {
        "production": {
            "tsConfig": "libs/ng-generic-components/tsconfig.lib.prod.json"
        },
        "development": {
            "tsConfig": "libs/ng-generic-components/tsconfig.lib.json"
        }
    },
    "defaultConfiguration": "production"
},
"build": {
    "builder": "@nrwl/workspace:run-commands",
    "options": {
        "commands": [
            "nx base-build ng-generic-components",
            "node_modules/scss-bundle/dist/bundler.js -c alertlogic-theme.bundle-config.json"
        ],
        "parallel": false
    }
}

但是当它运行时,我看到在我的终端中完成了基本构建步骤,但随后我在 scss-bundle 步骤中获得了拒绝的权限:

/bin/sh: node_modules/scss-bundle/dist/bundler.js: Permission denied
ERROR: Something went wrong in @nrwl/run-commands - Command failed: node_modules/scss-bundle/dist/bundler.js -c alertlogic-theme.bundle-config.json --verbose=true
Error: ERROR: Something went wrong in @nrwl/run-commands - Command failed: node_modules/scss-bundle/dist/bundler.js -c alertlogic-theme.bundle-config.json --verbose=true
    at /Users/robert.parker/Documents/Github/al-magma-console/node_modules/@nrwl/workspace/src/executors/run-commands/run-commands.impl.js:53:19
    at Generator.throw (<anonymous>)
    at rejected (/Users/robert.parker/Documents/Github/al-magma-console/node_modules/tslib/tslib.js:115:69)

我是否需要对这个 scss-bundle 目录的权限做任何事情,或者这应该工作吗?

谢谢

标签: angularnrwl-nxnrwl

解决方案


推荐阅读