首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >要求VSCode扩展名中的config.js文件具有绝对路径(例如"C:\...")不工作

要求VSCode扩展名中的config.js文件具有绝对路径(例如"C:\...")不工作
EN

Stack Overflow用户
提问于 2021-02-24 12:02:25
回答 1查看 79关注 0票数 0

我正在开发Argdown VSCode extension。可以使用argdown.config.json文件或导出配置对象的argdown.config.js文件来配置Argdown解析器。使用Javascript文件是允许用户向Argdown解析器添加自定义插件的最简单方法。

如果用户告诉解析器使用Javascript文件,则使用import-fresh加载该文件(它使用节点的require,但删除缓存的版本。

使用Argdown命令行工具(@argdown/cli)可以很好地工作,但在VSCode扩展中找不到配置文件的模块。该扩展使用绝对文件路径来要求配置模块(例如"C:\Users\my-username\projects\my-argdown-project\argdown.config.js").这些路径在VScode扩展之外使用import-fresh。

VSCode扩展是否有安全限制,不允许使用具有绝对文件路径的模块?或者,有没有其他原因导致这种方法不起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 16:41:45

这与VSCode无关。这个问题是由于import-fresh与webpack捆绑在一起造成的。我以为webpack会忽略动态导入,但它没有。

我很幸运:从上个月开始,webpack支持"magic comments" for require (不仅仅是导入)。所以我可以使用:

代码语言:javascript
运行
AI代码解释
复制
require(/* webpackIgnore: true */ file);

你必须在你的webpack配置中激活魔术评论支持:

代码语言:javascript
运行
AI代码解释
复制
module.exports = {
    parser: {
      javascript: {
        commonjsMagicComments: true,
      },
    },
}

现在下一个问题是如何将神奇的注释添加到import-fresh包中。为此,我使用了string-replace-loader:

代码语言:javascript
运行
AI代码解释
复制
module.exports = {
  module: {
    rules: {
      {
        enforce: "pre",
        test: /import-fresh[\/\\]index\.js/,
        loader: "string-replace-loader",
        options: {
          search:
            "return parent === undefined ? require(filePath) : parent.require(filePath);",
          replace:
            "return parent === undefined ? require(/* webpackIgnore: true */ filePath) : parent.require(/* webpackIgnore: true */ filePath);",
        },
      },
    }
  }
}

在此之后,我可以再次加载argdown.config.js文件,即使在与webpack捆绑所有内容之后也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66350516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档