Angular-cli: tsconfig paths not respected for styles

Created on 28 Dec 2017  路  8Comments  路  Source: angular/angular-cli

So the issue is that the paths setting from the tsconfig.app.json is not respected for style files imports since the cli 1.3.0.

My setup is that I have a module inside of my project, aliased in tsconfig.app.json using:

    ...

    "paths": {
      "@core/*": [
        "./core/*"
      ]
    }

The module consists of various ts and scss files.

The files are imported as:
import { SomeClass } from '@core/module/file';

and for styles as:
@import '~@core/module/styles'; // this fails since 1.3.0

Since [email protected] the styles import of this kind is not working.

Simple reproducible example:

https://github.com/nnixaa/cli-scss-alias-issue/commit/40c33c8db58ae6f9b6c73670f0a16624428d388a

Versions

tested and reproducible on cli 1.3.0, 1.6.2, 1.6.3
tested and works fine on cli 1.2.6, 1.2.7

Repro steps

Observed behavior

ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/styles.scss
Module build failed:
@import '~@core/module/styles'; // this fails since 1.3.0
^
      File to import not found or unreadable: ~@core/module/styles.
Parent style sheet: stdin
      in /Users/nixa/Development/Sandbox/scss-alias-tsconfig/src/styles.scss (line 2, column 1)
Error:
@import '~@core/module/styles'; // this fails since 1.3.0
^
      File to import not found or unreadable: ~@core/module/styles.
Parent style sheet: stdin
      in /Users/nixa/Development/Sandbox/scss-alias-tsconfig/src/styles.scss (line 2, column 1)
    at options.error (/Users/nixa/Development/Sandbox/scss-alias-tsconfig/node_modules/node-sass/lib/index.js:291:26)
 @ ./src/styles.scss 4:14-191
 @ multi ./src/styles.scss

Desired behavior

Should import styles correctly as per configured paths setting.

Possibly related

https://github.com/angular/angular-cli/issues/8117 (workaround used there fixes the issue)
https://github.com/angular/angular-cli/issues/8036

devkibuild-angular triage #1 feature

Most helpful comment

Any updates/fixes/workaround on this?

All 8 comments

Any updates/fixes/workaround on this?

Any updates on this?

Same problem

still valid issue. workaround for this is to add this entry in .angular-cli.json

    {
        "apps": [{
            ...
            "stylePreprocessorOptions": {
                "includePaths": [
                    "./app/global-styles"
                ]
            },
            ...
        }]
    }

still valid issue. workaround for this is to add this entry in .angular-cli.json

    {
        "apps": [{
            ...
            "stylePreprocessorOptions": {
                "includePaths": [
                    "./app/global-styles"
                ]
            },
            ...
        }]
    }

Do you know if there is a way to make VS Code go to definition(ctrl/cmd + click) still works?
This can fix the build issue, but I am missing go to definition

Any news on this? The workaround does not work for me.

My tsconfig:

"paths": {
    "@projx/components": [
        "projects/projx/components/src/public_api"
    ],
    "@projx/components/*": [
        "projects/projx/components/*"
    ],
    "~@projx/components/themes/default": [
        "projects/projx/components/src/lib/styles/themes/default.scss"
    ]
}

Inside my local SCSS file:

@import '~@projx/components/themes/default';

Still, it doesn't work for the styles, only for the TS files.

Closing as this is working as intended. TypeScript config paths are meant to work solely for TypeScript.

As suggested above you can use includePaths to shorten your SCSS import.

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

_This action has been performed automatically by a bot._

Was this page helpful?
0 / 5 - 0 ratings