我的项目中需要一个模块来下载私有的npm软件包。为此,我正在使用一个.npmrc文件来提供下载软件包所需的只读令牌。为了将npm提供的令牌保留在文件之外,我希望将其添加为环境变量,并使其在文件中扩展。例如:
# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)
NPM_TOKEN在安装引用之前,我不知道如何将其添加到环境中。我尝试使用npm预安装脚本:
"preinstall": "NPM_READ_ONLY_TOKEN=my_token_goes_here_foo_bar"**
但是我仍然遇到同样的错误:
Error: Failed to replace env in config: ${NPM_READ_ONLY_TOKEN}
Run Code Online (Sandbox Code Playgroud)
我尝试使用echo命令进行测试,以查看是否preinstall在.npmrc变量扩展之前运行,但显然没有。我会收到错误,但看不到我的回声日志。我似乎在这里错过了一些东西。
我知道将令牌放入package.json会破坏将令牌从.npmrc文件中拉出的目的。我实际上正在使用提供环境配置服务的服务,该服务将用于运行命令并获取所需的令牌。例如TOKEN=config_service_value。
我有一个看起来像这样的package.json:
"scripts": {
"dev": "cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js",
"dev:stub-server": "./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100"
}
Run Code Online (Sandbox Code Playgroud)
我在代码中添加了一些逻辑,以dev:stub-server根据命令行参数更改配置的方式。因此,无论何时运行以下命令,我都会得到期望的结果:
yarn dev:stub-server --results=4
$ ./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100 -- --results=4
Run Code Online (Sandbox Code Playgroud)
如您所见,这些选项将转发到基础脚本,并且一切正常。
我的问题是我无法--results从yarn dev命令传播到dev:stub-server正确的位置。父脚本会运行,dev:stub-server但是参数最终会转发到基础脚本,如下所示:
yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js --results=2
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使上面的工作代替如下?
yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server --results=2 | …Run Code Online (Sandbox Code Playgroud) 我们在package.json构建脚本中有一个复制命令(不,我们不能快速更改)。
有什么解决方案可以让我们轻松地使用相同的语法使这项工作在多平台上工作?
我查看了几个 npm copy 包,但它们不能从 windows 转换为 unix 路径。
我们基本上需要这样的东西:
"build": "doStuff && cp -r ../folder/ /dist/"
Run Code Online (Sandbox Code Playgroud)
为窗户工作。
有任何想法吗?
我正在尝试在codesandbox 中运行json-servernpm。我创建了一个普通项目并添加了对package.json. 我必须运行一个脚本json-server --watch db.json。
Codesandbox 有没有办法运行脚本?
我维护一个包的单一存储react-querybuilder库。我将文档网站代码合并到该目录下,但不是作为工作区(这些代码位于)。/website/packages/*
该/website目录有自己的package.json脚本docusaurus *(start/build/deploy/etc.)。我希望在根目录中有脚本/package.json来执行/website/package.json. 目前我有这样的东西/package.json:
{
"scripts": {
"website:install": "cd website && yarn",
"website:start": "cd website && yarn start",
"website:build": "cd website && yarn build",
"website:deploy": "cd website && yarn deploy"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好、更通用的方法来做到这一点?这样我必须为每个脚本命名两次,一次 in/package.json一次 in /website/package.json.
(我尝试过--cwd,但这实际上并没有运行在其他目录的 中定义的脚本。它运行在其他目录的根目录package.json中定义的脚本。例如,实际上与 package.json yarn --cwd website buildyarn build,至少在我的情况下是这样。)
我认为可能有一个yarn像--cwd …
我有以下两个 npm 脚本:
包.json
"scripts": {
"check:coverage": "npm test && http-server -so -p 9000 coverage/lcov-report",
"test": "jest --coverage --verbose"
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,当我运行命令:时npm run check:coverage,该命令http-server将在第一个脚本运行成功(所有测试通过)或失败(一个或多个测试失败)后运行。但是,当测试失败时,错误不允许运行http-server。
所以我的问题是:
是否可以将错误重定向到标准输出以独立于脚本的结果运行http-servernpm test?
PS:我尝试使用|for 并行运行两个任务,但是如果在 http-server 打开页面时套件测试运行时间太长,则此时覆盖率报告尚未准备好。
我正在尝试在 windows 上管理 react 项目的配置,它以前在 mac 上运行。我正在使用yarn build. 里面package.json scripts>build被配置为"rm-rf deployment/static;react-scripts build && mv build deployment/static". 由于rm-rfandmv命令适用于 Linux,我尝试使用rmdir/delandmove代替.. 但它似乎不起作用。我收到错误:Parameter format not correct - "static"。
我需要为 npm 和 yarn 编写通用脚本。
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "npm run build:clean; npm run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "yarn run build:clean; yarn run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "$_ run build:clean; $_ run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
但有时它不能正常工作。
存在一些合法的方法来做到这一点?
我有简单的自定义入门包react-create-app和Electron.js. 我已添加到 package.json 文件:
"scripts": {
"electron": "electron .",
"start": "cross-env BROWSER=none react-scripts start",
....
Run Code Online (Sandbox Code Playgroud)
我可以用npm run electron- 启动 Electron 并用 React启动npm start。
我想要的是只用一个命令来启动 React 和 Electron npm run both:
我努力了:
"both": "\"npm start\" \"npm run electron \"",
Run Code Online (Sandbox Code Playgroud)
但我在日志文件中收到错误:
退出状态 1 node_modules\npm\node_modules\npm-lifecycle\index.js:301:16) - 没有具体内容
我已经尝试过并且:
"start": "npm run electron . && cross-env BROWSER=none react-scripts start",
Run Code Online (Sandbox Code Playgroud)
,但这会启动 Electron,当我关闭它时,它会启动 React 应用程序。
又报错:
"electron": "electron .",
"start": "cross-env BROWSER=none react-scripts start",
"both": "\"npm run …Run Code Online (Sandbox Code Playgroud) npm-scripts ×10
npm ×8
node.js ×5
yarnpkg ×4
package.json ×3
reactjs ×2
codesandbox ×1
copy ×1
electron ×1
nvm ×1
stderr ×1
stdout ×1
windows-10 ×1