sed is for simple substitutions on individual lines, that is all. For anything else you should use awk for clarity, robustness, efficiency, etc. etc. See Is it possible to escape regex metacharacters reliably with sed for some of the hoops you'd have to jump through to even BEGIN thinking about coming up with a robust sed script to do this job.
The simple, robust way to do what you want (in this case using GNU awk for multi-char RS):
$ cat tst.awk
BEGIN { RS="^$"; ORS="" }
ARGIND==1 { old=$0; next }
ARGIND==2 { new=$0; next }
s=index($0,old) { $0 = substr($0,1,s-1) new substr($0,s+length(old)) }
{ print }
$ cat old
"scripts": [
"../node_modules/something.js"
],
$ cat new
"scripts": [
"../node_modules/something1.js",
"../node_modules/something2.js"
],
$ cat file
foo
"scripts": [
"../node_modules/something.js"
],
bar
$ awk -f tst.awk old new file
foo
"scripts": [
"../node_modules/something1.js",
"../node_modules/something2.js"
],
bar