如何基于操作系统运行npm

she*_*esh 5 npm npm-scripts

我为每个操作系统都有这 2 个 npm:

"pack": "cd dist/fold1 && type script11.js script22.js script33.js > all.js",
"pack-unix": "cd dist/fold1 && cat script11.js script22.js script33.js > all.js"
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它们成为一个命令?

喜欢: "pack": "cd dist/fold1 && <if win than type else cat> script11.js script22.js script33.js > all.js",

Edu*_*ard 10

对于这种情况有一个很棒的包,称为run-script-os 链接这里

笔记!您可以组合具有相似脚本的操作系统标签。

{
  ...
  "scripts": {
    ...
    "pack": "run-script-os",
    "pack:win32": "...",
    "pack:macos": "...",
    "pack:default": "..."
    ...
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)


brc*_*-dd 6

您可以用作shelljs/shx仅开发依赖项。

npm install shx --save-dev
Run Code Online (Sandbox Code Playgroud)

然后在package.json

pack: "cd dist/fold1 && shx cat script11.js script22.js script33.js > all.js"
Run Code Online (Sandbox Code Playgroud)

使用shxoverrun-script-os的一个优点是不需要为不同的环境编写不同的脚本。shelljs如果您正在处理一些复杂的事情,则更喜欢使用它。如果它们都不满足您的用例(例如对 ShellJS 不支持的某些特定功能的依赖),那么您可以run-script-os按照其他答案的建议使用,或者您可以这样做:https:// stackoverflow.com/a/41551958,如果您不需要另一个依赖项。

shx不支持运行任意命令和设置环境变量。还有另一种流行的替代方案:cross-env.