Обрабатывать путь от зависимости в моем общем пакете npm entrerprise - PullRequest
0 голосов
/ 30 августа 2018

В моей компании есть общий пакет, в котором в качестве зависимости используется начальная загрузка, и структура выглядит следующим образом:

+ - my-library
    + - node_modules
      + ...
      + bootstrap
        + scss
          --_mixins.scss
          --_functions.scss
          --_variables.scss
          --_buttons.scss
    +-scss
      -- _buttons.scss
      -- main.scss 
    package.json

Идея этой библиотеки в том, что она будет использоваться многими командами. Основные файлы моей библиотеки:

package.json

{
  "name": "my-library",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "dev": "node-sass sass/index.scss --watch --output css"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bootstrap": "^4.1.2"
  },
  "devDependencies": {
    "node-sass": "^4.9.2"
  }
}

СКС / _buttons.scss

@import "./node_modules/bootstrap/scss/_mixins";
@import "./node_modules/bootstrap/scss/_functions";
@import "./node_modules/bootstrap/scss/_variables";
@import "./node_modules/bootstrap/scss/_buttons";

... THE CSS RULES FOR THE BUTTONS OF THE COMPANY ...

СКС / main.scss

@import "_buttons";
... THE CSS RULES FOR GENERAL STYLES OF THE COMPANY ...

Проблема в том, что другой проект потребляет мою библиотеку. Когда кто-то делает npm install --save my-library пути, определенные для получения начальной загрузки, отличаются, потому что при начальной загрузке теперь это одна папка назад.

+ - consumer-project

  + - node_modules
     + ...
     + bootstrap
       + scss
         --_mixins.scss
         --_functions.scss
         --_variables.scss
         --_buttons.scss
      + - my-library
        +-scss
          -- _buttons.scss
          -- main.scss 
        package.json

Если потребительский проект импортирует файл main.scss, это не будет выполнено, поскольку теперь путь для начальной загрузки в файле _buttons.scss теперь равен ../node_modules/bootstrap/

Мой вопрос: Как правильно обращаться с путями зависимостей моей библиотеки?

1 Ответ

0 голосов
/ 11 сентября 2018

Предполагая, что my-library живет в node-modules, используйте опцию --include-path для ссылки на ./node_modules/, которая позволит node-sass найти загрузчик при компиляции файлов scss.

Добавьте параметр --include-path к команде в package.json ...

"scripts": {
    "dev": "node-sass --include-path ./node_modules/ sass/index.scss -o --watch --output css"
 },
...