当我尝试使用styled-components.
出于本示例的目的,我们假设我们有两个存储库,app并且core将由core消耗app。
目前,core是用 TypeScript 编写并使用tsc.
为了快速迭代,我尝试使用yarn link链接core到app.
这对于appfind core... 我面临的问题是,当编译后的 TypeScript 代码core尝试需要一个包时,比如说,它尝试在of (而不是of )styled-components中找到这个包。由于我同时拥有 peerDependency 和 devDependency ,因此可以在s中找到它,但这不是我想要发生的事情。我希望它使用.node_modulescoreappstyled-componentscorenode_modulesstyled-componentsapp
我尝试过的一种替代方法yarn link是添加coreto appvia的依赖项file:/path。这似乎按预期工作,但引入了新问题。我怎样才能让我的开发机器存在于package.json本地开发中(而不需要不断地来回切换)?另外,似乎任何更新都core需要从 中删除该包app,并在重新添加之前清除纱线的缓存。
有没有更简单的方法可以让这个场景发挥作用?我刚刚开始将 Rollup 或 Webpack 作为解决方案,但不确定这是否是正确的方向。
我在 Lerna 和 Yarn 工作区下有一个 Monorepo。该存储库包含发布到 npm 并在 monorepo 外部和 monorepo 内部使用的包。在 monorepo 中开发时,我们希望所有此类包的main字段都package.json指向该src目录,而当在 monorepo 外部使用包时,我们希望使用者使用文件夹中的转译代码dist。
我希望这在包的所有使用中保持一致,我当前的解决方案是让字段main指向dist文件夹。然后,对于 monorepo 中的每个工具,即jest、tsc、webpack,parcel我必须想出一个不同的工具特定解决方案来为src目录而不是dist目录设置别名。但我不喜欢这样的事实:我必须为每个工具做这项工作。它似乎无法扩展。
有没有人提出一个较低级别的解决方案,其中模块根据环境解析到不同的文件夹?
谢谢。
当尝试使用纱线安装包时,出现以下错误:expected hoisted manifest for \"myPackage#@material-ui/core#react-dom\"
但目前尚不清楚“悬挂清单”到底是什么。
我正在尝试通过运行以下命令将 android 作为受支持的平台添加到我的项目中:离子电容器添加 android。
该命令被执行并在一个提示处停止,该提示询问我“您想使用哪个 npm 客户端?(使用箭头键),纱线是唯一的选择。
问题是我被困在这一点上,按箭头键没有注册任何东西(这些键工作正常),我什至无法选择给我的唯一选项
到目前为止,我已经尝试过:卸载纱线创建新项目删除 node_modules 更新所有模块
似乎没有任何效果。从好的方面来说,虽然当我尝试在另一台机器上执行这些步骤时,一切都运行良好,但我从未收到提示,这使得它仅对我的主工作站而言是独一无二的。我仍在试图弄清楚为什么我在这台特定机器上遇到问题
我正在尝试用以下方式安装我的软件包 yarn install
我已经12.1.0安装了节点,据我了解,node-sass至少需要版本4.12+才能与节点12一起使用
我的package.json文件是这样的:
{
"name": "redacted",
"private": true,
"dependencies": {
"@rails/webpacker": "3.5",
"babel-preset-react": "^6.24.1",
"bootstrap": "^4.1.2",
"font-awesome": "^4.7.0",
"js-md5": "^0.7.3",
"moment": "^2.22.2",
"prop-types": "^15.6.2",
"qrcode.react": "^0.8.0",
"react": "^16.4.1",
"react-big-calendar": "^0.19.2",
"react-dom": "^16.4.1",
"react-loading": "^2.0.3",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
"react-transition-group": "^2.5.0",
"urijs": "^1.19.1"
},
"devDependencies": {
"webpack-dev-server": "2.11.2"
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的(截断)错误是:
../fsevents.cc:85:58: error: expected ';' after top level declarator
void FSEvents::Initialize(v8::Handle<v8::Object> exports) {
^
;
30 warnings and 14 errors generated.
make: *** …Run Code Online (Sandbox Code Playgroud) 我在 Symfony 4.2 项目中工作,并尝试使用 Bootstrap 主题(所以我需要编译 Sass 代码)。我按照官方文档中给出的流程进行操作,该文档指示使用 webpack-encore。但我在根据文档使用它时遇到错误。
这是指示该过程的页面: https://symfony.com/doc/current/frontend/encore/simple-example.html
所以我安装了 Encore,然后启动yarn run encore. 这是终端中的内容:
yarn run v1.16.0
warning package.json: No license field
error Command "encore" not found.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Run Code Online (Sandbox Code Playgroud)
所以我访问了错误中指示的网站,其中显示:
如果我查看根目录中的 package.json,它确实只显示:
"devDependencies": {
"bootstrap": "^4.3.1",
"jquery": "^3.4.1",
"node-sass": "^4.12.0",
"popper": "^1.0.1",
"sass-loader": "^7.0.1"
}
}
Run Code Online (Sandbox Code Playgroud)
没有任何 encore 命令的脚本:-(
不过其余的似乎都不错。这是composer.json的摘录:
...
"require": {
...
"symfony/webpack-encore-bundle": "^1.5",
...
},
...
Run Code Online (Sandbox Code Playgroud)
我有一个 webpack.config.js 。
我运行了composer require encore并且 …
我正在尝试在我的一些工作区包中运行测试,但不是全部
从 monorepo 根我想运行类似的东西
yarn workspaces run test --exclude package3
Run Code Online (Sandbox Code Playgroud)
或者
yarn workspace package1 package2 run test
Run Code Online (Sandbox Code Playgroud)
但这些命令都无效。
谁能建议一个解决方法?
我有一个带有根文件夹和客户端文件夹的项目,两者都有package.json文件。
在根文件夹上,我永远都不想安装任何软件包。相反,我希望运行该命令$ yarn add some-package会将其自动添加到客户端文件夹中,就像我愿意那样$ yarn add some-package --cwd ./client
我尝试在cd client和yarn --cwd ./client中进行操作scripts.preinstall,但没有成功,我认为是因为preinstall和install是不同的过程。
我还尝试在其上运行cusotm bash脚本,preinstall但没有找到将args从命令行传递给它的方法,因此它们被毛线“弄肿”了。
任何想法如何做到这一点?
我对bash相当陌生,但是我可以在一些指导下研究解决方案。
在此先感谢,祝您度过愉快的一天!
PS。我可以通过在shell上劫持yarn命令来对其进行破解,并检查我是否位于上述项目文件夹中,并且该命令是否为yarn add,但是我希望为所有开发人员提供一个解决方案,而不污染我的shell。
我已经通读了有关 yarn 命令和 yarn.lock 的文档,我相信 yarn.lock 文件的全部意义在于使用该文件中指定的版本。
我很好奇的是:yarn.lock 中指定的版本什么时候实际使用?我在 package.jsonyarn install和 reran 中手动更改了一个包的版本,并且更新了 yarn.lock 文件以使用新版本。我认为它会被锁定,因此在 package.json 中指定什么新版本并不重要,只要 yarn.lock 为该包指定了一个版本,它就会使用旧版本。
如果这就是 yarn.lock 应该如何工作,那么为什么不在 package.json 中指定 EXACT 版本,而不是在版本号前面使用 ~ 或 ^ 。现在我必须这样做,以便在运行时不更改 yarn.lock 文件yarn install。
那么什么时候真正使用锁定版本/这是使用yarn.lock的正确方法吗?
我有一个使用纱线工作区的项目。该项目的结构是:
package.json
packages
- project A
- project B
- project C
Run Code Online (Sandbox Code Playgroud)
当我运行时yarn install,这些包将安装在项目根node_modules中。最近我添加了另一个项目(D)并运行了yarn install. 对于项目 D,其中安装了一些依赖项,projectD/node_modules因此我在根目录中有一些依赖项,在 projectD 中有一些依赖项,当我运行项目时,它会导致错误。
无论如何,我可以“强制”yarn 在根节点模块中安装所有依赖项吗?