npm我在尝试使用 向脚本传递参数时遇到问题lerna。
我有一个节点脚本,我想在工作区的每个包中运行它。lerna文档建议如下:
{
"scripts": {
"my-script": "lerna exec -- node \\$LERNA_ROOT_PATH/scripts/my-script.js"
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在,如果我在根目录中运行,yarn run my-script它将在工作区中的每个包中运行脚本。
有时,我需要将执行范围限制到特定的包。因此,从命令行运行它显然是有效的:lerna exec --scope somepackage -- node \$LERNA_ROOT_PATH/scripts/create-common-scripts.js。
我的问题:如何将 npm 脚本与lerna范围参数连接起来。这不起作用:yarn run my-script --scope somepackage,因为它将参数设置为命令的末尾:lerna exec -- node \\$LERNA_ROOT_PATH/scripts/my-script.js --scope somepackage。
谢谢!
使用案例:
我在 NPM 中设置一个prepublishOnly钩子,它删除“lib”文件夹,然后将打字稿源文件转换到新的 lib 文件夹中,然后运行测试。
问题:
应该有两个人发布 NPM 包,两人都在不同的操作系统(Windows / Mac)上工作。因此删除文件夹的命令是不同的。
"scripts": {
"build": "tsc",
"clean": "rm -rf lib",
"clean:windows": "if exist lib rmdir /s /q lib",
"lint": "tslint --project tsconfig.json --format stylish src/**/*.ts",
"format": "prettier --write \"**/*.ts\""
},
"husky": {
"hooks": {
"pre-push": "npm run clean:windows && npm run build && npm run test"
}
},
Run Code Online (Sandbox Code Playgroud)
问题:
有没有办法有条件地运行 NPM 脚本(基于所使用的操作系统),或者是否有可以跨这些操作系统运行的删除文件夹命令?
我的主要 npm 脚本是“npm run build”。
我想要做的是编写另一个脚本,每当“npm run build”失败时,该脚本就会像异常处理中的 catch 一样执行。
这适用于 Powershell 命令行:
C:\rootProject\> copy ZZZ.js -destination ZZZXXX.js
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
包.json
"scripts": {
"copy-script": "copy ZZZ.js -destination ZZZXXX.js"
}
Run Code Online (Sandbox Code Playgroud)
运行脚本:
C:\rootProject\> npm run copy-script
Run Code Online (Sandbox Code Playgroud)
错误
The syntax of the command is incorrect.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test-module-imports@1.0.0 test-copy: `copy ZZZ.js -destination ZZZXXX.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the test-module-imports@1.0.0 test-copy script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm …Run Code Online (Sandbox Code Playgroud) 我喜欢标准版本,因为它使用 git commits 更新更改日志,但对于我正在处理的项目版本控制由另一个命令管理 - 并且必须保持这样。有没有办法让标准版本只是为了从提交(遵循 commitlint 标准)生成新的更改日志而不是修改版本或创建标签?
我在 package.json 文件中有这个:
{
"name": "test demo",
"version": "1.0.0",
"description": "test demo scripts",
"scripts": {
"test:v1": "wdio src/resources/config/wdio.chrome.conf.js --spec test/Tests.spec.ts",
"test:v2": "wdio src/resources/config/wdio.firefox.conf.js --spec test/Tests.spec.ts",
"test": "npm run test:v1 && npm run test:v2"
},
...
}
Run Code Online (Sandbox Code Playgroud)
当运行此命令时:
npm run test
Run Code Online (Sandbox Code Playgroud)
如果test:v1失败,则test:v2根本不执行脚本。
有没有一种方法可以配置它,以便所有脚本都运行,无论其中一些脚本是否失败?
编辑:当我在 package.json 中尝试此操作时:
"test": "npm run test:v1 ; npm run test:v2"
Run Code Online (Sandbox Code Playgroud)
然后我仍然没有执行这两个脚本,只是test:v1执行时出错。
这是我在控制台中得到的:
C:\2020\demo>npm run test
> demo@1.0.0 test C:\2020\demo
> npm run test:v1 ; npm run test:v2
> demo@1.0.0 test:v1 C:\2020\demo …Run Code Online (Sandbox Code Playgroud) 我正在尝试在条形图顶部添加数据标签
import { Bar } from 'react-chartjs-2';
import ChartDataLabels from 'chartjs-plugin-datalabels';
<Bar data={chartData} options={opts} plugins={[ChartDataLabels]} />
Run Code Online (Sandbox Code Playgroud)
参考这个链接
面临以下问题:
无法解析/node_modules/chartjs-plugins-datalabels/dist中的chart.js/helpers
我正在尝试imagemin使用npm脚本创建脚本并使用imagemin-cli它.首先,我将文件复制到dist(或.tmp用于开发)文件夹,然后使用以下脚本压缩图像:
的package.json
...
scripts {
"copy:dev": "cpx app/src/**/*.{html,png,jpg,mp4,webm} .tmp/",
"copy:prod": "cpx app/src/**/*.{html,png,jpg,mp4,webm} dist/",
"imagemin:dev": "imagemin app/src/images/**/* -o .tmp/images/",
"imagemin:prod": "imagemin app/src/images/**/* -o dist/images/",
...
},
Run Code Online (Sandbox Code Playgroud)
因此,当我运行这些脚本时,压缩后所有图像都放在文件夹中images/.
有没有办法压缩图像并保持文件夹结构?也许与另一个插件或其他东西.
假设我需要在此过程中重命名index.html为,这可能吗?如果是这样,我将如何去做? abc.xyzng build
我假设我必须修改package.json build脚本,并且可能会使用管道,但我无法通过查看 Angular CLI github 或通过 NPM 的站点来弄清楚。谷歌也没有帮助我......我一定没有问正确的问题。
我正在尝试制作一个脚本,该脚本仅在 master 是当前签出的分支时才运行...
我设法通过以下方式获取了分支名称:
git rev-parse --symbolic-full-name --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)
但是把它放在一个脚本中,检查它的价值并根据它做一件事或其他事情并不顺利
"foo": "set branch=git rev-parse --symbolic-full-name --abbrev-ref HEAD | if [branch==master]; then echo \"yes\"; else echo \"no\"; fi;"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
npm-scripts ×10
npm ×6
node.js ×2
angular-cli ×1
changelog ×1
chart.js ×1
git ×1
imagemin ×1
javascript ×1
lerna ×1
package.json ×1
powershell ×1
reactjs ×1
typescript ×1
webdriver-io ×1
yarnpkg ×1