标签: npm-scripts

如何从 npm “postinstall” 钩子中获取包名?

Npm 提供了一种在安装每个包后执行自定义可执行文件或脚本的方法(请参阅Hook 脚本)。

这是我写的一个小钩子脚本:

hook-test-npm/node_modules/.hooks/postinstall

#!/usr/bin/env node
console.log("postinstall...  " + process.argv.join("  "));
Run Code Online (Sandbox Code Playgroud)

然后我以通常的方式安装了一个包:

$ npm install --save some-package
Run Code Online (Sandbox Code Playgroud)

然而结果并不像我希望的那样:

> some-package@1.0.0 postinstall /Users/macuser/Desktop/hook-test-npm/node_modules/some-package
> /Users/macuser/Desktop/hook-test-npm/node_modules/.hooks/postinstall
postinstall...  /usr/local/bin/node  /Users/macuser/Desktop/hook-test-npm/node_modules/.hooks/postinstall
Run Code Online (Sandbox Code Playgroud)

刚刚安装的包的名称(“some-package”)似乎没有作为参数提供给我的可执行钩子。

有没有办法从钩子内访问这些信息?

hook npm npm-install npm-scripts

5
推荐指数
1
解决办法
706
查看次数

npm 脚本如何优先考虑本地依赖而不是全局依赖?

我明白NPM脚本添加./node_modules/.bin到你的PATH,所以你可以简单地运行npm test使用package.json之下,故宫将自动使用本地版本的摩卡咖啡中发现的./node_modules/.bin

"scripts": {
    "test": "mocha"
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的功能,因为它可以节省我编写这样的package.json文件:

"scripts": {
    "test": "./node_modules/.bin/mocha"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我带来了一个在全球安装了 mocha 的新开发人员怎么办?或者我需要将其推送到具有预配置全局包的环境?如果我使用的是简写mocha,而不是./node_modules/.bin/mocha在我的package.json, 什么优先,全局或本地包?

javascript json node.js npm npm-scripts

5
推荐指数
1
解决办法
1674
查看次数

如何从导出环境变量的 npm 脚本运行 bash 脚本

我有一个包含以下脚本的 package.json:

"scripts": {
  "config": ". ./setup.sh"
},
Run Code Online (Sandbox Code Playgroud)

setup.sh 文件提示用户输入 API 令牌,

read -p "Enter API Authorization Token: " val
export API_AUTH_TOKEN=$val
Run Code Online (Sandbox Code Playgroud)

和通过 PS3 菜单的环境。例如:输入 1 应该导出 DEFAULT_ENV=' http://localhost:8000 '。

当我通过终端(. ./setup.sh)运行这个 setup.sh 时,它工作得很好。仅当我运行“npm run config”时,它实际上并没有导出这些值,尽管它的行为就像它一样。我的印象是这与此脚本是另一个进程的进程有关,因此不会影响全局环境。我如何才能做到这一点?

bash environment-variables node.js npm npm-scripts

5
推荐指数
1
解决办法
1918
查看次数

`Tslint --fix` 不会自动修复,而是生成 lint 问题作为控制台错误

我正在使用Angular 入门套件

我正在尝试让 tslint 使用 --fix 标志自动修复我所有的 lint 问题。

我正在运行脚本: npm run tslint --fix src/**/*.ts

它只会生成与我已经被告知的相同错误,tslint而不是自动修复它:

控制台输出:

ERROR: src/app/app-routing.module.ts[10, 5]: comment must start with a space
ERROR: src/app/app-routing.module.ts[2, 20]: Too many spaces before 'from'
Run Code Online (Sandbox Code Playgroud)

我是否缺少允许它实施更改的东西?

我的版本是:

"tslint": "^5.6.0"  
"codelyzer": "^3.1.2"
Run Code Online (Sandbox Code Playgroud)

问题:如何让 tslint 对我的 lint 错误实施自动修复?

tslint npm-scripts codelyzer

5
推荐指数
1
解决办法
9181
查看次数

如何检测本机反应中的循环依赖导入?

是否有任何包或解决方案来检测 react native 中的循环依赖项导入?

[或者]

运行应用程序时,我可以获得循环导入的堆栈跟踪吗?

目前,循环依赖导入返回未定义的值,没有说明确切的问题。

谢谢!

cyclic-dependency react-native npm-scripts

5
推荐指数
1
解决办法
1862
查看次数

webpack 构建完成后运行 Node 服务器的 NPM 命令

我想运行如下命令: npm run start:dev 使我的节点服务器运行但在 webpack 完成构建包之后。

我目前的 npm 脚本是:

"scripts": {
    "start": "node server/server.js",
    "start:dev": "npm run build:prod & npm start",
    "lint": "eslint *",
    "build:dev": "webpack",
    "build:prod": "webpack -p --env production",
    "dev-server": "webpack-dev-server",
    "test": "cross-env NODE_ENV=test jest --config=jest.config.json"
},
Run Code Online (Sandbox Code Playgroud)

当前命令将同时启动这两个操作。

node.js npm webpack npm-scripts

5
推荐指数
1
解决办法
1925
查看次数

npm 在 ctrl+c 上运行 poststop 脚本

我的package.json脚本部分看起来像这样。

"scripts": {
  "prestart": "mongod",
  "start": "NODE_ENV=prod node server.js",
  "poststop": "mongo admin --eval 'db.shutdownServer()'",
  "predev": "mongod",
  "dev": "NODE_ENV=dev nodemon server.js"
},
Run Code Online (Sandbox Code Playgroud)

我使用 pre- 和 post 钩子mongod在启动我的服务器之前启动。然后我使用ctrl+杀死我的服务器c。不幸的是,这不会执行poststop脚本。结果,npm/yarn start/dev第二次调用会抛出错误并中止,因为mongod已经在运行。

另一个 mongod 实例已经在 /data/db 目录上运行,正在终止

我可以以某种方式实现poststopctrl+ c

mongodb sigterm npm-scripts yarnpkg

5
推荐指数
1
解决办法
1270
查看次数

NPM脚本中的跨平台管道命令

考虑到我们有带管道的 NPM 脚本,类似于伊斯坦布尔文档中的建议:

"coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls"
Run Code Online (Sandbox Code Playgroud)

它显然没有考虑到 Windows。

如何在 Node.js 包中使这样的带有管道的命令跨平台?

该问题特定于工作服,但不限于此;这可以是任何带有管道的命令。

pipe node.js npm coveralls npm-scripts

5
推荐指数
1
解决办法
6164
查看次数

跨模块共享 npm devDependencies

我有许多使用相同 devDependencies 的模块,我想让这些依赖项成为一个模块本身,或者其他一些集中管理它们的方式。是否有任何既定的模式来实现这一目标?

我已经研究过使用 npm 脚本在父模块中安装开发依赖项,但是它确实感觉有点 hacky 例如

module-x 对 module-shared-dev-dependencies 有一个开发依赖。module-shared-dev-dependencies 有一个安装后脚本,它将 cwd 更改为 module-x 和 npm install --save-dev eslint prettier husky ... 等等。然后它会复制相关的配置信息,例如 rc 文件。像 husky 这样的模块目前只有 package.json 文件中的配置信息,所以也需要修改。

也有可能在 git 中有一个基本模块,所有其他模块都从中派生出来,但是,如果可能的话,我宁愿坚持使用 npm 模块方法。

javascript node.js npm npm-install npm-scripts

5
推荐指数
0
解决办法
179
查看次数

gulp-watch 只运行一次

Gulpwatch在第一次更改时只运行一次。我正在 ubuntu 14 上的 apache2 上运行 Wordpress,并且正在使用教程。它说明了如何使用 gulp 来观察变化。第一次更改可以正常工作 - 刷新浏览器http://localhost:3000。我对设置 gulp watch 非常陌生,所以我不知道为什么它只运行一次。gulpfile.js 如下。如果有人需要其他任何澄清,请回来。谢谢

我已经完成了将其关闭并再次打开的编码版本。我已经在 stackoverflow 和其他地方查看了针对此类问题的各种响应。

var gulp = require('gulp'),
   settings = require('./settings'),
   webpack = require('webpack'),
   browserSync = require('browser-sync').create(),
   postcss = require('gulp-postcss'),
   rgba = require('postcss-hexrgba'),
   autoprefixer = require('autoprefixer'),
   cssvars = require('postcss-simple-vars'),
   nested = require('postcss-nested'),
   cssImport = require('postcss-import'),
   mixins = require('postcss-mixins'),
   colorFunctions = require('postcss-color-function');

gulp.task('styles', function() {
  return gulp.src(settings.themeLocation + 'css/style.css')
    .pipe(postcss([cssImport, mixins, cssvars, nested, rgba, colorFunctions, autoprefixer]))
    .on('error', (error) => console.log(error.toString()))
    .pipe(gulp.dest(settings.themeLocation));
});

gulp.task('scripts', …
Run Code Online (Sandbox Code Playgroud)

wordpress node.js ubuntu-14.04 gulp-watch npm-scripts

5
推荐指数
1
解决办法
2249
查看次数