【问题标题】:How to make webpack prefer file with extension?如何使 webpack 更喜欢带有扩展名的文件?
【发布时间】:2021-08-24 08:19:26
【问题描述】:

我有两个文件:

- somefile.scss
- somefile.scss.ts

在源代码中,文件是这样使用的(来自打字稿文件):

import styles from "somefile.scss"

打字稿正常工作并导入正确的文件(.scss.ts),但 webpack 选择了错误的文件(.scss)

我怎样才能让 webpack 更喜欢 .scss.ts 文件而不是 .scss (假设两者都存在于同一目录中,我无法更改名称或目录)?

我已尝试修改解析(未成功):

// not working
resolve: {
  extensions: [".scss.ts", ".ts"]
}
// also not working
resolve: {
  extensions: ["*", ".ts"]
}

【问题讨论】:

    标签: typescript webpack sass


    【解决方案1】:

    我认为最易读和最清晰的方法就是使用全名导入文件:

    import styles from "somefile.scss.ts"
    

    这样您就不必猜测将要导入哪个,并且如果有人稍后更改resolve webpack 配置,则构建很可能不会受到影响。

    如果你真的想把它放在resolve.extenstions 选项上,你应该写成:

        ...
        resolve: {
            // the last `...` is optional in case you want 
            // to keep the default webpack extension resolution
            extensions: [".ts", "", "..."]
        }
        ...
    

    【讨论】:

    • webpack 报错:configuration.resolve.extensions[1] 应该是一个非空字符串。现在 webpack 配置中似乎禁止使用空字符串。很遗憾,我无法更改导入,这是由我无法修改的第三方工具生成的
    • 你的 webpack 配置在 '.ts' 文件中?
    • 事实上 webpack@5 在 extensions 数组中使用空字符串是非常好的。虽然打字可能不是。
    • 是的,webpack5,配置在 .ts 文件中 - 谢谢我会尝试通过移动到 .js 来解决
    • 我不知道如何处理 gulpfile 配置检查。但是我创建了一个示例项目来说明所描述的配置工作得很好stackblitz.com/edit/node-j3vvbh?file=package.json
    猜你喜欢
    • 2010-11-21
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2019-08-27
    • 2019-02-03
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多