angular - @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 目录的权限做任何事情,或者这应该工作吗?
谢谢
解决方案
推荐阅读
- android - 确定一个矩形是否适合另一个
- javascript - 在单击功能上从 vue js 减少 MongoDb 列中的数字
- python - pandas concat() 不在同一列上加入
- forms - 如何在 vueJS 中删除输入焦点上的错误提示
- sql - 群组分析
- python - 我试图让玩家在 pygame 中移动,但它没有用,它给了我这个错误:
- biztalk - 首次使用时 BizTalk 主机延迟
- c# - JsonTextReader.Read() 超时 - 我陷入了一个 while 循环
- python - 从 python 运行 vssadmin
- c# - 从单击带有“点”的动态按钮获取坐标