【问题标题】:Copy assets of library with Yarn Plug'n'Play使用 Yarn Plug'n'Play 复制库的资产
【发布时间】:2018-11-10 08:08:57
【问题描述】:

我有代码可以在构建时复制资产。我想知道用Yarn Plug'n'Play 做同样事情的最佳方法是什么,因为 node_modules 不存在。

new CopyWebpackPlugin([
  { from: 'node_modules/pdfjs-dist/cmaps/', to: 'static/cmaps/' },
]),

yarn cache dir 告诉我目录,.pnp.js 中还有一个包位置。

  ["pdfjs-dist", new Map([
    ["2.0.943", {
      packageLocation: path.resolve(__dirname, "../../Library/Caches/Yarn/v3/npm-pdfjs-dist-2.0.943-32fb9a2d863df5a1d89521a0b3cd900c16e7edde/node_modules/pdfjs-dist/"),

我应该像以前一样解析文件并复制吗?还是有更好的方法?

【问题讨论】:

标签: yarnpkg


【解决方案1】:

在 Yarn Plug n' Play 中,您可以使用 require.resolve('name-of-package') 获取您的 from 目录的基本路径。在这种情况下,它类似于

const path = require('path');
const modulePath = require.resolve('pdfjs-dist');
const fromPath = path.join(modulePath, 'cmaps');

【讨论】:

    【解决方案2】:

    使用require.resolve 是正确的,但根据包的不同可能会导致此错误

    错误:合格的路径解析失败:我们查找了以下路径,但没有一个可以访问。

    CopyWebpackPlugin documentation 在使用 yarn 工作区或 monorepos 时建议使用以下 sn-p。

    module.exports = {
      plugins: [
        new CopyPlugin({
          patterns: [
            {
              from: `${path.dirname(
                require.resolve(`${moduleName}/package.json`)
              )}/target`,
              to: "target",
            },
          ],
        }),
      ],
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多