标签: npm-scripts

使用 lerna 将自定义参数发送到 npm (yarn) 脚本

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 lerna npm-scripts yarnpkg

4
推荐指数
1
解决办法
2508
查看次数

NPM条件脚本(Windows / Mac)应执行不同的命令)

使用案例:

我在 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 typescript npm-scripts

4
推荐指数
1
解决办法
2396
查看次数

主 npm 脚本失败后如何运行 npm 脚本?

我的主要 npm 脚本是“npm run build”。

我想要做的是编写另一个脚本,每当“npm run build”失败时,该脚本就会像异常处理中的 catch 一样执行。

npm npm-scripts

4
推荐指数
1
解决办法
2973
查看次数

如何将 Powershell 命令添加到 NPM 脚本中?

这适用于 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)

powershell node.js npm npm-scripts

4
推荐指数
1
解决办法
3789
查看次数

有没有办法使用标准版本来更新更改日志

我喜欢标准版本,因为它使用 git commits 更新更改日志,但对于我正在处理的项目版本控制由另一个命令管理 - 并且必须保持这样。有没有办法让标准版本只是为了从提交(遵循 commitlint 标准)生成新的更改日志而不是修改版本或创建标签?

changelog npm-scripts

4
推荐指数
1
解决办法
2038
查看次数

万一失败,如何继续运行 package.json 中定义的脚本?

我在 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)

javascript node.js webdriver-io package.json npm-scripts

4
推荐指数
1
解决办法
3398
查看次数

使用 Chartjs-plugins-datalabels (ReactJS) 时找不到模块 /chartjs.helpers

我正在尝试在条形图顶部添加数据标签

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

附加依赖项

详细错误信息

npm reactjs chart.js npm-scripts react-chartjs-2

4
推荐指数
1
解决办法
5131
查看次数

是否可以使用imagemin-cli并保持压缩文件的相同文件夹结构?

我正在尝试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/.

有没有办法压缩图像并保持文件夹结构?也许与另一个插件或其他东西.

imagemin npm-scripts

3
推荐指数
2
解决办法
2344
查看次数

在 Angular CLI 构建脚本中重命名文件

假设我需要在此过程中重命名index.html为,这可能吗?如果是这样,我将如何去做? abc.xyzng build

我假设我必须修改package.json build脚本,并且可能会使用管道,但我无法通过查看 Angular CLI github 或通过 NPM 的站点来弄清楚。谷歌也没有帮助我......我一定没有问正确的问题。

angular-cli npm-scripts

3
推荐指数
1
解决办法
2756
查看次数

npm scripts/package.json - 仅当当前在 git master 分支上运行

我正在尝试制作一个脚本,该脚本仅在 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)

有任何想法吗?

git npm npm-scripts

3
推荐指数
1
解决办法
2434
查看次数