Прежде всего, вам не нужно использовать Angular / React для работы с исходными картами. Это всего лишь общий случай использования.
Во-вторых, NPM это именно то, что он говорит; менеджер пакетов. Так что вам не нужно NPM.
Что вам нужно - это процесс сборки. Вы совершенно ясно, что вы не хотите минимизировать js, но вам нужны исходные карты. Это обычная конфигурация, используемая для отладки js, и обычно она выполняется путем «сборки» или «Uglifying» кода с отключенной оптимизацией.
Скорее всего, вы могли бы полностью избежать NPM, если бы хотели использовать компилятор Closure, но это червь, и я бы посоветовал вам этого избегать.
Вместо этого я предлагаю использовать Uglify * глобально * (для каждой машины) с NPM. Это шаг «один раз на машину».
npm install uglify-js -g
*: Надеемся, что эта сторона повысит ваши требования без NPM. Я экспериментировал с клонированием репозитория Uglify напрямую, но даже тогда вам нужно было запустить его, и для этого, как минимум, вы захотите установить его зависимости с помощью NPM). Я бы хотел быть неправым в этом, но я подумал, что это очень не связано с этим постом.
И затем написание сценария сборки с использованием этого. Я попытался собрать детали для вас здесь:
Файл: gen-map.sh
#!/usr/bin/env bash
uglifyjs file1.js --config-file gen-map.json \
-o file1.min.js \
--source-map "root='http://foo.com/src',url='file1.min.js.map'"
cat file1.min.js
Файл: gen-map.json
{
"compress": false,
"output": {
"beautify": true
},
"sourceMap": {
"content": "content from file1.js.map",
"url": "file1.js.map"
}
}
Файл: file1.js
var b = function() {
console.log('b');
};
function c() {
console.log('c');
};
console.log('a');
b();
c();
(function() {
console.log('d');
})();
Файл: file1.min.js
var b = function() {
console.log("b");
};
function c() {
console.log("c");
}
console.log("a");
b();
c();
(function() {
console.log("d");
})();
//# sourceMappingURL=file1.min.js.map
Файл: file1.min.js.map
{"version":3,"sources":["file1.js"],"names":["b","console","log","c"],"mappings":"AAAA,IAAIA,IAAI;IACNC,QAAQC,IAAI;;;AAGd,SAASC;IACPF,QAAQC,IAAI;;;AAGdD,QAAQC,IAAI;;AACZF;;AACAG;;CACA;IACEF,QAAQC,IAAI;EADd","sourceRoot":"http://foo.com/src"}
*: Uglify-es, если вы используете функции ES6.
После этого остается только обновить пути, имена файлов и фактические теги скрипта. Используя эту конфигурацию, вы все равно должны обслуживать файл min.js, хотя вполне возможно, что пометка вручную вашего JS-файла для указания на карту может работать ...
С этим конфигом вам нужно будет обновлять созданные файлы, выполнив:
? ./gen-map.sh
Делать это с npm и gulp было бы проще, но, если вы не возражаете против другого пакета, есть 2 общих "наблюдателя за измененными файлами", которые я могу предложить;
Nodemon :
? nodemon gen-map.sh
ENTR
? entr gen-map.sh