小编tk4*_*421的帖子

当我只需要构建时,为什么yarn会安装dev依赖项?

如果我调用yarn add <my-package>,Yarn将安装依赖项和devDependencies <my-package>.这是正常的行为吗?

我检查了文档,但我找不到阻止它安装开发依赖项(我不需要)的方法.我相信devDependencies是用于将源代码编译到构建脚本中的依赖项.构建我的应用程序我只需要构建.

javascript node.js npm yarnpkg

10
推荐指数
3
解决办法
9277
查看次数

从 NPM 包导出多个模块

我有一个相当大的项目 A 使用 Node 和 Typescript。在项目 AI 中有很多不同的模块,我想在另一个项目 B 中重用它们。

因此我用这个 tsconfig.json 构建了项目 A:

{
    "compilerOptions": {
        "target": "es2017",
        "module": "commonjs",
        "declaration": true,
        "outDir": "./dist",
        "sourceMap": true,
        "strict": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "typeRoots": ["./node_modules/@types", "./modules/@types"]
    },
    "exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)

因此所有文件都以这种方式构建到 /dist 文件夹中:

  • 距离
    • moduleA.js
    • 模块A.map
    • 模块广告
    • moduleB.js
    • moduleB.map
    • 模块B.d.ts
    • ....

要在另一个项目中使用这些 moduleA 和 moduleB,我将以下内容添加到项目 A 中的 package.json 中:

    "name": "projectA",
    "version": "1.0.0",
    "description": "...",
    "main": "dist/moduleA.js",
    "typings": "dist/moduleA.d.ts",
Run Code Online (Sandbox Code Playgroud)

我使用纱线工作区来访问项目 A 作为项目 B 中的包。但问题是,在import {ModuleA} from 'projectA'我的新项目 B …

node.js npm typescript yarnpkg yarn-workspaces

10
推荐指数
2
解决办法
2万
查看次数

NPM预安装脚本

我试图在安装任何软件包之前运行一些策略脚本.例如:

{
  "name": "pre-hook-check",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "preinstall": "echo preinstall",
    "postinstall": "echo postinstall"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "abc": "^0.6.1",
    "preact": "^8.2.5"
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的示例中的安装前和安装后脚本似乎只在我这样做时才有效npm install,但我希望每次尝试安装任何东西时都会运行.

例如:假设我想编写一个脚本,以便在我的团队运行时检查包的版本npm install <some package>.我想检查安装包的版本并验证它的版本是否高于"1.0.0",否则不要让它们安装.

我打算写一个预安装脚本

npm info lodash version

并检查我尝试安装的任何软件包的版本.如果版本不可用,我计划在安装之前将其设置为交互式并询问用户的确认.

node.js npm npm-install npm-scripts yarnpkg

9
推荐指数
1
解决办法
9356
查看次数

React 16 - 不正确的对等依赖

迁移到 React 16 后,我收到了很多警告,指出存在不正确的对等依赖关系。

如何使用纱线避免这些问题?

我尝试删除所有包,删除yarn.lock,然后再次添加yarn。

 warning "react-textarea-autosize@4.3.2" has incorrect peer dependency "react@>=0.14.0 <16.0.0".
warning "react-modal@2.4.1" has incorrect peer dependency "react@^0.14.0 || ^15.0.0".
warning "react-modal@2.4.1" has incorrect peer dependency "react-dom@^0.14.0 || ^15.0.0".
warning "react-komposer@2.0.0" has incorrect peer dependency "react@^0.14.7 || ^15.0.0".
warning "react-treebeard@2.0.3" has incorrect peer dependency "react@^15.5.4".
warning "react-treebeard@2.0.3" has incorrect peer dependency "react-dom@^15.5.4".
warning "babel-loader@6.4.1" has unmet peer dependency "webpack@1 || 2 || ^2.1.0-beta || ^2.2.0-rc".
warning "chai-enzyme@0.8.0" has unmet peer dependency "cheerio@0.19.x || 0.20.x || 0.22.x || …
Run Code Online (Sandbox Code Playgroud)

npm reactjs yarnpkg

9
推荐指数
1
解决办法
1万
查看次数

将yarn.lock同步回package.json并锁定

我有package.jsonyarn.lock文件.yarn.lock有版本锁定,我想同步,并锁定(没有^)yarn.lock中的所有版本,回到package.json.有没有简单的方法呢?

最后我想在我的package.json中没有"^",因为它会导致太多麻烦,我想特别升级包装,而不是在我运行新纱线安装时不知不觉.

是否有任何工具或方法可以快速替换package.json中的版本与yarn.lock中存在的那些版本?

node.js npm package.json yarnpkg

9
推荐指数
1
解决办法
875
查看次数

Yarn(或 npm)用 fork 交换嵌套依赖

在我的package.json我有一个包:

{
  "somepackage": "^6.5.1"
}
Run Code Online (Sandbox Code Playgroud)

这个包有一个依赖项(来自somepackage's package.json):

{
  "someotherpackage": "^9.4.2"
}
Run Code Online (Sandbox Code Playgroud)

我想将另一个包交换到它的一个叉子上。我知道纱线的Selective dependency resolution功能,但我想这仅适用于同一包的不同版本。

我也可以somepackage手动fork并更改其依赖项,交换someotherpackagesomeotherpackage-fork,但如果有另一种方式,我会采取这种方式。

谢谢!

npm yarnpkg

9
推荐指数
1
解决办法
355
查看次数

是否有纱线安装子文件夹的命令?

背景:

我们正在使用yarn这个项目,我们不想package.jsonnpm/ yarn命令混合编写脚本.

我有一个根目录,其中包含一些子文件夹.

每个人都有不同的服务.

我想在根文件夹中创建一个脚本,npm install每个服务一个接一个.

题:

你知道什么是替代纱线npm install <folder>吗?

我正在寻找类似这个psuedo命令的东西: yarn <folder>

subdirectory npm-install yarnpkg

9
推荐指数
1
解决办法
4127
查看次数

“ yarn start”上的“找不到所需文件”

我设置了一个create-react-app,我试图在localhost上运行App.js,但是这样做后,yarn start我收到以下错误消息:

22:23 $ yarn start
yarn run v1.3.2
$ react-scripts start
Could not find a required file.
  Name: index.html
  Searched in: /Users/-----/Desktop/---/----/hw/HW-REPO/hw-name/public
error Command failed with exit code 1.
Run Code Online (Sandbox Code Playgroud)

我已经用安装了yarn yarn install,所以我不确定我的代码或文件结构是否有问题。

这是文件结构:

app-name
 -client
   --public
     ---index.html
     ---manifest.json
   --src
     ---Components
        ----various folders
     ---App.js
     ---App.test.js
     ---index.js
 -database
 -model
 -gitignore
 -package-lock.json
 -package.json
 -server.js
 -yarn.lock
Run Code Online (Sandbox Code Playgroud)

javascript tree reactjs yarnpkg

9
推荐指数
2
解决办法
1万
查看次数

brew安装纱线版

我试过用

brew install yarn@1.7.0 --without-node
Run Code Online (Sandbox Code Playgroud)

要么

brew install yarn@1.7.x --without-node
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

Error: No available formula with the name "yarn@1.7.0" 
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
Run Code Online (Sandbox Code Playgroud)

我认为可以使用brew安装不同版本的纱线吗?

homebrew yarnpkg

9
推荐指数
3
解决办法
1万
查看次数

在纱线工作区中,如何强制解决子项目的依赖项?

我使用的库支持另一个具有广泛版本的库作为对等依赖项。不幸的是,工作区的子项目之一拉入了与使用库的子项目不同的版本。结果,它们最终需要不同的版本。

我正在尝试使用选择性分辨率来处理这个问题并强制它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。

我可能误解了如何利用这些。

我当前的设置是我有一个根工作区,里面有这些孩子:Project A package.json(这是问题的根源):

   dependencies: {
      backbone.marionette: '2.4.1'
   }
Run Code Online (Sandbox Code Playgroud)

项目 B package.json(这是有问题的应用程序):

  dependencies: {
         backbone.marionette: '1.8.8',
         @organization/UILibrary: '0.0.22'
   }
Run Code Online (Sandbox Code Playgroud)

@organization/UILibrary(在工作区之外) package.json 看起来像这样:

  peerDependencies: {
       backbone.marionette: ">= 1 < 3"
  }
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使项目 B 不依赖于项目 A,当@organization/UILibrary 被拉入项目 B 时,它会根据它的需要获得 2.4.1 版的主干.marionette(而项目 B 的本地要求是 1.8.8)。

我尝试使用分辨率将项目 B package.json 更新为:

   dependencies: {
         backbone.marionette: '1.8.8',
         @organization/UILibrary: '0.0.22'
    },
    {
    "resolutions": {
        "@organization/**/backbone.marionette": "1.8.8",
        "@organization/backbone.marionette": "1.8.8",
        "@organization/UILibrary/backbone.marionette: "1.8.8",
        "@organization/UILibrary/**/backbone.marionette: '1.8.8"
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?基于对纱线问题及其一些选择性依赖 PR 的一些挖掘(参见https://github.com/yarnpkg/yarn/issues/4874),我相信这可能是由于 UILibrary 的作用域(有斜线) )。

yarnpkg yarn-workspaces

9
推荐指数
1
解决办法
4936
查看次数