A craco plugin for automatic aliases generation for Webpack and Jest.
-
Install craco
-
Install
craco-alias:npm i -D craco-alias
-
Edit
craco.config.js:const CracoAlias = require("craco-alias"); module.exports = { plugins: [ { plugin: CracoAlias, options: { // craco-alias options // please see below } } ] };
-
Go to Examples section
-
source: One of"options","jsconfig","tsconfig"
Defaults to"options" -
aliases: An object with aliases names and paths
Defaults to{} -
tsConfigPath: A path to tsconfig file
Only required whensourceis set to"tsconfig"
Specify aliases manually (source: "options")
Note: you don't need to add
/*part for directories in this case
/* craco.config.js */
const CracoAlias = require("craco-alias");
module.exports = {
plugins: [
{
plugin: CracoAlias,
options: {
source: "options",
aliases: {
"@file": "src/file.js",
"@dir": "src/some/dir"
}
}
}
]
};Use aliases from jsconfig.json (source: "jsconfig")
/* craco.config.js */
const CracoAlias = require("craco-alias");
module.exports = {
plugins: [
{
plugin: CracoAlias,
options: {
source: "jsconfig"
}
}
]
};Note: your jsconfig should always have baseUrl and paths properties
/* jsconfig.json */
{
compilerOptions: {
baseUrl: "src",
paths: {
"@file": ["file.js"],
"@dir/*": ["dir/*", "dir"]
}
}
}Use aliases from tsconfig.json (source: "tsconfig")
/* craco.config.js */
const CracoAlias = require("craco-alias");
module.exports = {
plugins: [
{
plugin: CracoAlias,
options: {
source: "tsconfig",
// as you know, CRA doesn't allow to modify tsconfig's compilerOptions
// so you should create a separate JSON file and extend tsconfig.json from it
// and then just specify its path here:
tsConfigPath: "tsconfig.paths.json"
}
}
]
};/* tsconfig.paths.json */
{
compilerOptions: {
baseUrl: "src",
paths: {
"@file": ["file.js"],
"@dir/*": ["dir/*", "dir"]
}
}
}Migrating from cra-alias
-
Install
cracoandcraco-alias:npm i -D @craco/craco craco-alias
-
Create a
craco.config.jsfile in the root directory:See
tsconfigexample in the Examples section/* craco.config.js */ const CracoAlias = require("craco-alias"); module.exports = { plugins: [ { plugin: CracoAlias, options: { source: "jsconfig" } } ] };
-
Update the existing calls to
cra-aliasin thescriptssection of yourpackage.jsonfile to use thecracoCLI:/* package.json */ "scripts": { - "start": "cra-alias start", + "start": "craco start", - "build": "cra-alias build", + "build": "craco build" - "test": "cra-alias test", + "test": "craco test" } -
Done! You can also remove
cra-alias:npm r -D cra-alias