npm package.json 别名,如 webpack

Mar*_*sen 1 node.js npm webpack

我正在尝试为模块添加别名,但是我不确定如何使用 package.json

在 webpack 中,你会做这样的事情:

module.exports = {
  //...
  resolve: {
    alias: {
      'pixi.js': 'pixi.js-legacy'
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

但是没有 webpack 的等价物是什么?

小智 11

有一个 npm 包用于此目的:module-alias

安装后,您可以将别名添加到 package.json,如下所示:

"_moduleAliases": {
  "@root"      : ".", // Application's root
  "@deep"      : "src/some/very/deep/directory/or/file",
  "@my_module" : "lib/some-file.js",
  "something"  : "src/foo", // Or without @. Actually, it could be any string
}
Run Code Online (Sandbox Code Playgroud)

确保将此行添加到应用程序主文件的顶部:

"_moduleAliases": {
  "@root"      : ".", // Application's root
  "@deep"      : "src/some/very/deep/directory/or/file",
  "@my_module" : "lib/some-file.js",
  "something"  : "src/foo", // Or without @. Actually, it could be any string
}
Run Code Online (Sandbox Code Playgroud)

您应该只在最终产品中使用它(而不是您打算在 npm 中发布或在其他地方使用的包) - 它修改了 require 的行为。


San*_*Ben 10

从 NPM 版本 6.9 开始无需安装任何其他软件包即可支持它

$ npm i aliasName@npm:packageToInstall
Run Code Online (Sandbox Code Playgroud)

???

$ npm i aliasName@npm:packageToInstall
Run Code Online (Sandbox Code Playgroud)

这个想法似乎npm:依赖版本说明符中的类似 URI 的方案。

// package.json
"dependencies": {
    "aliasName": "npm:packageToInstall@^1.6.1"
}
Run Code Online (Sandbox Code Playgroud)