Articles of npm scripts

npm运行脚本,将值传递给.js文件

我将这些构build脚本添加到我的package.json中: npm run do-build –dev npm run do-build –prod 我想运行exec文件来为我做一个构build,但基于这些–dev / prod我想传递参数给我的setEnvironment.js文件,基本上设置variables,如果这是dev或prod环境,并基于该variables一些function将被打开/closures。 在我脚本的package.json中,如何将variables/值传递给我正在调用的js文件。 "scripts": { "do-build:dev": "node ./src/setEnvironment.js" } 如何在我的do-build脚本中将variables传递给setEnvironment.js?

从NPM脚本获取stdout到一个variables

我有这个节点脚本parsing.YAML并输出一个名为版本的字段 node node/getAssetsVersion.js => "2.1.2" 我试图把这个stdout变成一个variables,并在NPM脚本中使用它 这就是我想在我的package.json中做的事情: "scripts": { "build": "cross-env VERSION=\"$(node node/getAssetsVersion.js)\" \"node-sass –include-path scss src/main.scss dist/$VERSION/main.css\"" } 谢谢!

npm脚本如何优先考虑全局依赖关系?

我知道npm脚本将./node_modules/.bin添加到PATH ,因此您可以简单地使用下面的package.json运行npm test ,npm将自动使用./node_modules/.bin的mocha本地版本 "scripts": { "test": "mocha" } 这是一个很好的function,因为这样可以节省我写这样的package.json文件: "scripts": { "test": "./node_modules/.bin/mocha" } 但是,如果我带上一位在全球安装摩卡咖啡的新开发者,该怎么办呢? 或者我需要推动这个预先configuration的全球包的环境? 如果我在我的package.json使用短手mocha ,而不是./node_modules/.bin/mocha ,那么全局或本地软件包优先?

在Windows上运行并行的npm脚本

我在我的package.json中有一个npm并行脚本,可以在Mac上使用,但不能在Windows上使用: "myScript": "nodemon ./server.js & cross-env NODE_ENV=development webpack-dev-server" 当它被分成两个独立运行的脚本时,在Mac和Windows上都可以正常工作: "myScript1": "cross-env NODE_ENV=development webpack-dev-server", "myScript2": "nodemon ./server.js", 我想保留并行脚本,以便我不必分别运行两者。 我如何使这个工作在Windows上?

NPM运行并行任务,但等到资源可用于运行第二个任务

在npm中,我如何运行两个或更多的并行任务,但是等待第一个任务创build的资源可供第二个任务使用,等等。 示例(概念): npm run task1 & waitfor task1 then task2 & waitFor task3 then task4 … 有任何想法吗? 编辑 举个例子:让我们说我的第一个任务是启动一个web服务器,而我的第二个任务是每次事件发生时都从这个web服务器上获取数据。 另一个例子:我的第一个任务可能是启动webdriver-manager,我的第二个任务,启动一个web服务器,我的第三个任务,运行e2etestingeverty时间我的文件被改变。 所以,我需要所有这些任务保持同时运行,但是需要按照特定的顺序和时间进行初始化。

NPM命令删除mongo数据库,使用“echo”不起作用

我试图创build一个从我的mongo实例中删除数据库的npm命令。 当我将这行代码直接粘贴到我的shell中时,它可以工作,并给出如下输出: > echo 'db.dropDatabase()' | mongo musicappdb MongoDB shell version v3.4.10 connecting to: mongodb://127.0.0.1:27017/musicappdb MongoDB server version: 3.4.10 { "ok" : 1 } bye 但是,当我从我的npm脚本,它是这样定义的 scripts: { … "drop-db": "echo 'db.dropDatabase()' | mongo musicappdb", … }, 我明白了 > echo "db.dropDatabase()" | mongo musicappdb MongoDB shell version v3.4.10 connecting to: mongodb://127.0.0.1:27017/musicappdb MongoDB server version: 3.4.10 […]

如何将命令行parameter passing给嵌套的脚本?

注意:这不是关于将参数发送到顶层脚本,而是发送到该脚本所调用的脚本 在我的package.json中,当我直接调用一个使用命令行参数的脚本时,它可以工作。 但是当我调用一个脚本调用另一个脚本时,它不会将命令行parameter passing给它。 我如何通过他们? { … "takes-args": "somemodule", "calls-takes-args": "npm run takes-args" } 当我运行下面的命令,参数来通过: npm run takes-args — -env dev 但是当我通过另一个脚本运行它时,它从来没有得到参数。 有什么办法让他们失望? 也许通过一个像美元符号的variables标记? //The top-level script gets the args, BUT takes-args does NOT npm run calls-takes-args — -env dev 有什么办法吗?

npm脚本使用进程replace命令失败

在我的标准OSXterminal上运行以下操作按预期工作: $ diff <(ls dir1) <(ls dir2) correct output here 但是,当我尝试运行它作为一个NPM脚本,它失败: $ npm run diff sh: -c: line 0: syntax error near unexpected token `(' sh: -c: line 0: `diff <(ls src) <(ls dist)' 当我将NPM脚本更改为"bash -c 'diff <(ls dir1) <(ls dir2)'"它首先输出所需的结果,然后抛出一个错误(退出状态1)。 编辑:这些怪异的<()符号是过程replace的方式。 刚刚了解了他们。

npm package.json操作系统特定的脚本

我想创build一个package.json构build脚本,从Windows,Linux,Mac运行时执行一些不同的命令集。 问题是我找不到一个方法把它放在package.json文件中,这个文件在每个系统上运行都没有问题。 这里是我想要的一个例子: "scripts" : { "build.windows" : "echo do windows specific stuff", "build.linux" : "echo do linux specific stuff", "build.mac" : "echo do mac specific stuff", "build" : "??????????????" <- what to put here to execute script designed for OS on which npm is running }

如何在节点6.10.1中使用npm安装所有依赖项

问题:如果我运行以下命令 npm install 只有在package.json文件的“dependencies”部分中提到的软件包才被安装。 那些在“devDependencies”没有被安装。 为了安装“devDependencies”我需要运行下面的命令: npm install –only=dev 我的问题是,有一种方法,我可以通过一个单一的命令安装(我知道我可以通过定义一个npm自定义脚本,但我不喜欢这种解决scheme)。 注意:我的节点版本是6.10.1这个问题在我升级到6.10.1之后开始发生