小编tk4*_*421的帖子

打字稿:Yarn Workspaces IDE支持(IntelliJ,VSCode ......)

在一个更大的打字稿项目上工作,我们决定将代码移动到带有纱线工作空间的monorepo .

我们使用webpack来构建和捆绑,一切运行良好(特别是本地模块/包之间的链接).

由于纱线工作区将大多数node_modules存储在mono repo的根文件夹中,因此IDE(IntelliJ以及VSCode)在"内部"项目(所谓的"monorepo"的"包")内编码时解决了对任何node_modules的导入问题. ).

奇怪的是,导入是未知的,但另一方面,如果您手动将其导入,则大多数情况下您可以在IDE中导航到相同导入的IDE中的正确源/定义.

我们试图告诉IntelliJ查看node_modules的另一个文件夹,但仍然不满意.

分享您对纱线工作空间/ monorepo(例如lerna)的体验以及您如何开发生活在这些单体中的代码.

你使用哪个IDE?

您是否在IDE和/或package.json,tsconfig.json中添加了任何特殊配置?

ide intellij-idea visual-studio-code monorepo yarnpkg

12
推荐指数
1
解决办法
2713
查看次数

nvm with yarn Yarn 需要安装 Node.js 4.0 或更高版本

我有 nvm:

nvm ls
        v8.11.3
        v8.11.4
->      v11.1.0
default -> 8.11.4 (-> v8.11.4)
node -> stable (-> v11.1.0) (default)
stable -> 11.1 (-> v11.1.0) (default)
Run Code Online (Sandbox Code Playgroud)

我安装了纱线:

sudo apt-get install --no-install-recommends yarn
Run Code Online (Sandbox Code Playgroud)

我还添加了 .bashrc alias node=nodejs。但是当我尝试时,yarn install我看到:

Yarn requires Node.js 4.0 or higher to be installed.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

nvm yarnpkg

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

Rails预编译资产未检测到Yarn可执行文件

我有一个Rails项目,我们从Rails 5.0转换为Rails 5.1.0.当我尝试预编译资产时,我收到以下错误消息:

Yarn executable was not detected in the system.
Download Yarn at https://yarnpkg.com/en/docs/install
Run Code Online (Sandbox Code Playgroud)

我从互联网搜索中读到的一切都说纱线和网络包装器附带Rails 5.1.我从检查rails版本中得到以下内容.

$rails --version
Rails 5.1.0
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我也想知道发生了什么.

ruby-on-rails asset-pipeline ruby-on-rails-5 yarnpkg

11
推荐指数
2
解决办法
6745
查看次数

使用Yarn工作区,如何将编译后的二进制文件链接到工作区后编译?

上下文

纱线工作区提供方便的单一回购功能,其中包自动链接.即,他们可以相互要求/导入,并且他们的二进制文件可以从工作区根目录链接和访问.

一个例子:

工作区/的package.json

{
  "name": "200180719-yarn-bin",
  "version": "1.0.0",
  "workspaces": [
    "packages/*"
  ],
  "private": true
}
Run Code Online (Sandbox Code Playgroud)

工作区/包/ A /的package.json

{
  "name": "a",
  "version": "1.0.0",
  "main": "src/index.js",
  "bin": {
    "mycli": "src/index.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

工作区/包/ A/src目录/ index.js

#!/usr/bin/env node

console.log('welcome to the cli')
Run Code Online (Sandbox Code Playgroud)

如果然后将目录更改为主工作区并运行yarn install,则yarn正确链接二进制文件,您可以运行:

yarn run mycli
Run Code Online (Sandbox Code Playgroud)

从工作区目录就好了.大!

问题

yarn install遇到的问题是,如果你的代码首先必须编译,那么二进制文件在完成之前将不可用(因为你不应该在版本控制中提供已编译的代码).我使用Typescript来编译我的cli:

重命名index.jsindex.ts并更新a/package.json到:

{
  "name": "a",
  "version": "1.0.0",
  "main": "src/index.js",
  "bin": {
    "mycli": "dist/index.js"
  },
  "scripts": {
    "build": "tsc src/index.ts --outDir dist", …
Run Code Online (Sandbox Code Playgroud)

symlink lerna monorepo yarnpkg yarn-workspaces

11
推荐指数
0
解决办法
643
查看次数

如何让TSLint解决与Yarn工作区的间接类型依赖关系?

上下文

纱线工作空间提供了一种依赖单声道包装的便捷方式.当包A依赖于包B时,包B中定义的接口等在包A中被适当地解析.

问题

我面临的问题是,如果包B依赖于外部库,但外部库缺少打字,因此包B创建了自己的some-library.d.ts文件.当使用tslintlint包A时,对于包B中的表达式,此自定义定义文件已正确解析,但对于包A中与包B中的类型一起使用的表达式则无法解析.

我在这里推出了一个简单的例子:

https://github.com/tommedema/tslint-yarn-workspaces

它的核心如下.

包/ A/src目录/ index.ts

// tslint:disable:no-console

import { someDependedFn } from 'b'

export const someDependingFn = (): void => {
  const someNr = someDependedFn('pascal-case-me')
  console.log(someNr)
}
Run Code Online (Sandbox Code Playgroud)

包/ B/src目录/ index.ts

import camelCase from 'camelcase'

export const someDependedFn = (str: string): string => {
  const camelStr = camelCase(str, { pascalCase: true })

  return camelStr
}
Run Code Online (Sandbox Code Playgroud)

包/ B/src目录/分型/驼峰/ index.d.ts

// Type definitions for camelcase 5.0
// Project: https://github.com/sindresorhus/camelcase

// tslint:disable only-arrow-functions …
Run Code Online (Sandbox Code Playgroud)

typescript tslint yarnpkg yarn-workspaces

11
推荐指数
1
解决办法
789
查看次数

纱线,node-gyp重建编译错误,node_modules / fsevents:命令失败

我正在使用Yarn处理软件包。

yarn install不管我使用哪个软件包,都会显示错误,但安装看起来已成功完成,并且文件node-modules直接位于下面。(jquery-ui不出现在下方node-modules

我删除yarn.lock并再次尝试,但徒劳无功。

有人可以帮忙吗?

我的环境如下所示:

whitebear$ yarn -v
1.10.1
whitebear$ node -v
v11.0.0
whitebear$ npm -v
6.4.1
Run Code Online (Sandbox Code Playgroud)

package.json

{
  "devDependencies": {
    "@symfony/webpack-encore": "^0.20.0",
    "bootstrap": "^4.1.3",
    "jquery": "^3.3.1",
    "node-sass": "^4.9.4",
    "popper.js": "^1.14.4",
    "sass-loader": "^7.1.0",
    "webpack-notifier": "^1.6.0"
  },
  "license": "UNLICENSED",
  "private": true,
  "scripts": {
    "dev-server": "encore dev-server",
    "dev": "encore dev",
    "watch": "encore dev --watch",
    "build": "encore production"
  },
  "dependencies": {
    "encore": "^0.0.30-beta",
    "jquery-ui": "^1.12.1",
    "jquery.event.drag": "^2.2.2",
    "slickgrid-es6": "^3.0.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

纱线原木 install …

javascript npm webpack yarnpkg

11
推荐指数
4
解决办法
4190
查看次数

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

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

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

javascript node.js npm yarnpkg

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

Rubymine和纱线

当我尝试使用"运行"(shift+ f10)启动它时,我的RoR项目出错了

但是当我rails s在控制台中启动服务器时,它可以工作.

========================================
  Your Yarn packages are out of date!
  Please run `yarn install` to update.
========================================


To disable this check, please add `config.webpacker.check_yarn_integrity = false`
to your Rails development config file (config/environments/development.rb).


yarn check v1.6.0
warning Integrity check: System parameters don't match
error Integrity check failed
error Found 1 errors.
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
Run Code Online (Sandbox Code Playgroud)
# Gemfile.lock
GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.0)
      actionpack (= 5.2.0)
      nio4r (~> 2.0) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rubymine yarnpkg

10
推荐指数
1
解决办法
766
查看次数

纱线升级以修复纱线审计错误

因此,到目前为止,似乎还没有yarn audit --fix,所以我正在尝试找出解决yarn audit错误的方法。

我试过了一个yarn upgrade,它修复了一些错误(很棒),但是仍然有几个错误。

然后,我尝试了yarn add <package>@latest其余的高漏洞,但是package.json当我认为问题出在我所使用软件包的依赖项上时,它升级了我的版本。

这是我一些剩余错误的示例:

????????????????????????????????????????????????????????????????????????????????
? high          ? Regular Expression Denial of Service                         ?
????????????????????????????????????????????????????????????????????????????????
? Package       ? minimatch                                                    ?
????????????????????????????????????????????????????????????????????????????????
? Patched in    ? >=3.0.2                                                      ?
????????????????????????????????????????????????????????????????????????????????
? Dependency of ? gulp                                                         ?
????????????????????????????????????????????????????????????????????????????????
? Path          ? gulp > vinyl-fs > glob-stream > glob > minimatch             ?
????????????????????????????????????????????????????????????????????????????????
? More info     ? https://nodesecurity.io/advisories/118                       ?
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
? high          ? Regular Expression Denial of …
Run Code Online (Sandbox Code Playgroud)

javascript npm gulp yarnpkg npm-audit

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

从 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万
查看次数