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”)似乎没有作为参数提供给我的可执行钩子。
有没有办法从钩子内访问这些信息?
我明白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, 什么优先,全局或本地包?
我有一个包含以下脚本的 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”时,它实际上并没有导出这些值,尽管它的行为就像它一样。我的印象是这与此脚本是另一个进程中的进程有关,因此不会影响全局环境。我如何才能做到这一点?
我正在使用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 错误实施自动修复?
是否有任何包或解决方案来检测 react native 中的循环依赖项导入?
[或者]
运行应用程序时,我可以获得循环导入的堆栈跟踪吗?
目前,循环依赖导入返回未定义的值,没有说明确切的问题。
谢谢!
我想运行如下命令: 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)
当前命令将同时启动这两个操作。
我的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 目录上运行,正在终止
我可以以某种方式实现poststop在ctrl+ c?
考虑到我们有带管道的 NPM 脚本,类似于伊斯坦布尔文档中的建议:
"coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls"
Run Code Online (Sandbox Code Playgroud)
它显然没有考虑到 Windows。
如何在 Node.js 包中使这样的带有管道的命令跨平台?
该问题特定于工作服,但不限于此;这可以是任何带有管道的命令。
我有许多使用相同 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 模块方法。
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) npm-scripts ×10
node.js ×6
npm ×6
javascript ×2
npm-install ×2
bash ×1
codelyzer ×1
coveralls ×1
gulp-watch ×1
hook ×1
json ×1
mongodb ×1
pipe ×1
react-native ×1
sigterm ×1
tslint ×1
ubuntu-14.04 ×1
webpack ×1
wordpress ×1
yarnpkg ×1