Npm 使用“纱线”将包添加到自定义@frontend_组件或lib文件夹

Npm 使用“纱线”将包添加到自定义@frontend_组件或lib文件夹,npm,bower,yarnpkg,yarn-workspaces,Npm,Bower,Yarnpkg,Yarn Workspaces,从迁移并运行命令时 纱线安装 创建了@bower_components文件夹,并将所有bower/前端组件添加到此文件夹中../node_modules/@bower_components “依赖项”:{ … “@bower_components/bootstrap”:“twbs/bootstrap”^3.3.7”, “@bower_components/jquery”:“jquery/jquery dist”^3.1.1, “@bower_components/lodash”:“lodash/

从迁移并运行命令时

纱线安装

创建了@bower_components文件夹,并将所有bower/前端组件添加到此文件夹中../node_modules/@bower_components

“依赖项”:{

“@bower_components/bootstrap”:“twbs/bootstrap”^3.3.7”,
“@bower_components/jquery”:“jquery/jquery dist”^3.1.1,
“@bower_components/lodash”:“lodash/lodash”^4.17.12,
“@bower_组件/力矩”:“力矩/力矩”^2.19.1,
…}

如果需要,我需要创建从@bower_components迁移到@frontend_components或添加到public/lib文件夹。我该怎么做

纱线——cwd/public/lib添加lodash


bower away的工作方式是创建一个从
/bower\u组件
/node\u模块/@bower\u组件
的符号链接:

bower away通过使用 并将它们全部添加到package.json 然后,包含bower依赖项的
package.json
文件如下所示:

{
  "dependencies": { 
     "@bower_components/bootstrap": "twbs/bootstrap#^3.3.7", 
     "@bower_components/jquery": "jquery/jquery-dist#^3.1.1", 
     "@bower_components/lodash": "lodash/lodash#^4.17.12", 
     "@bower_components/moment": "moment/moment#^2.19.1",
  }
}
这在大多数情况下都有效。但在您的情况下,符号链接不起作用。我运行了相同的问题,我的修复方法是修改我的express服务器并将
/bower\u组件
前端资源映射到
/node\u modules/@bower\u组件
后端资源,如下所示:

新的

原创的

 //app.use("/bower_components", express.static(path.join(__dirname, "/bower_components")));
如果不是您的情况,您可能需要手动更新对新
node_modules/@bower_components
文件夹的前端引用,正如原作者建议的那样:

但最初,代码中唯一需要的更改是更改任何 使用节点模块/@bower\u组件参考bower\u组件 (尽管您可以在postinstall脚本中将其链接到其他位置)


bower away的工作方式是创建一个从
/bower\u组件
/node\u模块/@bower\u组件
的符号链接:

bower away通过使用 并将它们全部添加到package.json 然后,包含bower依赖项的
package.json
文件如下所示:

{
  "dependencies": { 
     "@bower_components/bootstrap": "twbs/bootstrap#^3.3.7", 
     "@bower_components/jquery": "jquery/jquery-dist#^3.1.1", 
     "@bower_components/lodash": "lodash/lodash#^4.17.12", 
     "@bower_components/moment": "moment/moment#^2.19.1",
  }
}
这在大多数情况下都有效。但在您的情况下,符号链接不起作用。我运行了相同的问题,我的修复方法是修改我的express服务器并将
/bower\u组件
前端资源映射到
/node\u modules/@bower\u组件
后端资源,如下所示:

新的

原创的

 //app.use("/bower_components", express.static(path.join(__dirname, "/bower_components")));
如果不是您的情况,您可能需要手动更新对新
node_modules/@bower_components
文件夹的前端引用,正如原作者建议的那样:

但最初,代码中唯一需要的更改是更改任何 使用节点模块/@bower\u组件参考bower\u组件 (尽管您可以在postinstall脚本中将其链接到其他位置)


我为解决这个问题而实现的变通方法是引入一个简单的脚本,并用一个新的密钥更新package.json

在package.json下(用于处理前端所需的所有与UI相关的依赖项)

migrateUI.js

const uipackage = require('./package.json');
const packageName = Object.keys(uipackage.uidependencies);
const dir = 'public/libs';

 //if the folder already exists, it ignores else creates.
if (!fs.existsSync(dir)) {
  fs.mkdirSync(dir);
}

for (let i = 0; i < packageName.length; i++) {
  const element = packageName[i];
  const source = path.resolve('node_modules/' + element);
  const target = path.resolve('public/libs/' + element); //custom lib folder to save all UI dependencies
  if (!fs.existsSync(target)) {
    fs.symlinkSync(source, target, 'dir', (err) => {
      if (err && err.code !== 'EEXIST') {
        console.log('Error creating dependecny symlink - ', err);
      } else {
        console.log('Symlink for dependency created');
      }
    });
  }
}
constuipackage=require('./package.json');
const packageName=Object.keys(uipackage.uidependencies);
const dir='public/libs';
//如果该文件夹已存在,它将忽略其他创建的文件夹。
如果(!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
for(设i=0;i{
if(err&&err.code!=='EEXIST'){
console.log('Error creating dependecny symlink-',err);
}否则{
log('Symlink for dependency created');
}
});
}
}

我为解决此问题而实施的变通方法是引入一个简单的脚本,并使用新的密钥更新package.json

在package.json下(用于处理前端所需的所有与UI相关的依赖项)

migrateUI.js

const uipackage = require('./package.json');
const packageName = Object.keys(uipackage.uidependencies);
const dir = 'public/libs';

 //if the folder already exists, it ignores else creates.
if (!fs.existsSync(dir)) {
  fs.mkdirSync(dir);
}

for (let i = 0; i < packageName.length; i++) {
  const element = packageName[i];
  const source = path.resolve('node_modules/' + element);
  const target = path.resolve('public/libs/' + element); //custom lib folder to save all UI dependencies
  if (!fs.existsSync(target)) {
    fs.symlinkSync(source, target, 'dir', (err) => {
      if (err && err.code !== 'EEXIST') {
        console.log('Error creating dependecny symlink - ', err);
      } else {
        console.log('Symlink for dependency created');
      }
    });
  }
}
constuipackage=require('./package.json');
const packageName=Object.keys(uipackage.uidependencies);
const dir='public/libs';
//如果该文件夹已存在,它将忽略其他创建的文件夹。
如果(!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
for(设i=0;i{
if(err&&err.code!=='EEXIST'){
console.log('Error creating dependecny symlink-',err);
}否则{
log('Symlink for dependency created');
}
});
}
}