在 2.15.1 ember-cli 版本中远离 Bower

Moving away from bower in 2.15.1 ember-cli version

我正在尝试停止在我的 Ember 项目中使用 Bower 依赖项。我将 ember-cli 更新为 2.15.1,并将 bower 依赖项移至 package.json。也许了解哪些依赖项会有所帮助:

"font-awesome": "~4.7.0",
"jquery.inputmask": "
"moment": "~2.18.1",
"moment-timezone": "0.5.13"

我们还使用 bootstrap-datepicker 作为 bower 依赖项,但由于出现错误消息,我将其换成了 ember-bootstrap-datetimepicker,希望它能解决我的问题.我重新安装了 node_modules,删除了 bower_components,清除了 tmp 和 dist 文件夹以及 运行 npm cache clean && bower cache clean。从项目中,我删除了 bower.json 和 .bowerrc。我还在 package.json bowerDirectory: null 中明确定义,这样在 ember-cli-build.js broccoli 中就不会寻找任何 bower 组件。

在我的 ember-cli-build.js 中:

const isProductionLikeBuild = ['production', 'staging', 'review', 'e2e-testing'].indexOf(env) > -1;
const app = new EmberApp(defaults, {
    fingerprint: {
      enabled: isProductionLikeBuild,
      prepend: envConf.assetsPrefix
    },
    sourcemaps: {
      enabled: !isProductionLikeBuild
    },
    minifyCSS: { enabled: isProductionLikeBuild },
    minifyJS: { enabled: isProductionLikeBuild },
    'ember-cli-babel': {
      includePolyfill: true
    },
    'ember-bootstrap-datetimepicker': {
       "importBootstrapCSS": true,
       "importBootstrapJS": true,
       "importBootstrapTheme": true
     },
    'ember-font-awesome': { fontsOutput: '/assets/fonts' },
    exportConfig: {
      environments: [
        'production',
        'staging',
        'review',
        'e2e-testing'
      ]
    }
  });

当我关闭 sourcemaps 时,应用程序正在正确构建。 但是,当我不这样做时,这就是我在输入 ember s:

后得到的结果
The Broccoli Plugin: [BroccoliMergeTrees: TreeMerger (vendor & appJS)] failed with:
Error: ENOENT: no such file or directory, open '/Users/martagajowczyk/Desktop/Project/project-frontend/tmp/source_map_concat-input_base_path-S2ZmmRR0.tmp/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js'
    at Error (native)
    at Object.fs.openSync (fs.js:641:18)
    at Object.fs.readFileSync (fs.js:509:33)
    at SourceMap.addFile (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/fast-sourcemap-concat/lib/source-map.js:75:31)
    at /Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/broccoli-concat/concat.js:200:16
    at Array.forEach (native)
    at Concat.<anonymous> (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/broccoli-concat/concat.js:198:24)
    at /Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/fast-sourcemap-concat/lib/source-map.js:419:12
    at initializePromise (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/rsvp/dist/rsvp.js:567:5)
    at new Promise (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/rsvp/dist/rsvp.js:1039:33)

The broccoli plugin was instantiated at: 
    at BroccoliMergeTrees.Plugin (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/broccoli-plugin/index.js:7:31)
    at new BroccoliMergeTrees (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/node_modules/broccoli-merge-trees/index.js:16:10)
    at Function.BroccoliMergeTrees [as _upstreamMergeTrees] (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/node_modules/broccoli-merge-trees/index.js:10:53)
    at mergeTrees (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/broccoli/merge-trees.js:85:33)
    at EmberApp._mergeTrees (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1832:12)
    at EmberApp.javascript (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1307:17)
    at EmberApp.toArray (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1689:12)
    at EmberApp.toTree (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1711:38)
    at module.exports (/Users/martagajowczyk/Desktop/Project/project-frontend/ember-cli-build.js:46:14)
    at Builder.setupBroccoliBuilder (/Users/martagajowczyk/Desktop/Project/project-frontend/node_modules/ember-cli/lib/models/builder.js:56:19)

链接到 bower_components 的原因可能是什么? 谢谢

来自 ember 版本的输出 --verbose && npm --version && yarn --version:

ember-cli: 2.15.1
http_parser: 2.7.0
node: 6.10.3
v8: 5.1.281.101
uv: 1.9.1
zlib: 1.2.11
ares: 1.10.1-DEV
icu: 58.2
modules: 48
openssl: 1.0.2k
os: darwin x64
3.10.10
0.24.6

这是我的 package.json 的一部分,其中列出了依赖项和开发依赖项:

"devDependencies": {
    "broccoli-asset-rev": "^2.5.0",
    "ember-ajax": "^3.0.0",
    "ember-bootstrap-datetimepicker": "^1.1.0",
    "ember-buffered-proxy": "^0.7.0",
    "ember-can": "^0.8.4",
    "ember-cli": "^2.15.1",
    "ember-cli-app-version": "^3.0.0",
    "ember-cli-autoprefixer": "0.8.0",
    "ember-cli-babel": "^6.8.2",
    "ember-cli-bootstrap-datepicker": "^0.5.6",
    "ember-cli-code-coverage": "^0.4.1",
    "ember-cli-content-security-policy": "1.0.0",
    "ember-cli-dependency-checker": "^2.0.1",
    "ember-cli-eslint": "^4.2.0",
    "ember-cli-htmlbars": "^2.0.3",
    "ember-cli-htmlbars-inline-precompile": "^1.0.2",
    "ember-cli-inject-live-reload": "^1.6.1",
    "ember-cli-mirage": "^0.3.1",
    "ember-cli-moment-shim": "^3.5.0",
    "ember-cli-page-object": "1.11.0",
    "ember-cli-polyfill-io": "^1.2.2",
    "ember-cli-qunit": "^4.0.0",
    "ember-cli-sass": "^7.0.0",
    "ember-cli-shims": "^1.1.0",
    "ember-cli-sri": "^2.1.1",
    "ember-cli-uglify": "^1.2.0",
    "ember-cli-yuidoc": "0.8.8",
    "ember-cp-validations": "^3.3.0",
    "ember-data": "^2.13.1",
    "ember-deep-set": "^0.1.2",
    "ember-exex": "^0.1.12",
    "ember-export-application-global": "^2.0.0",
    "ember-feature-flags": "3.0.0",
    "ember-font-awesome": "4.0.0-alpha.3",
    "ember-inflector": "^2.0.0",
    "ember-inputmask": "0.4.0-beta.5",
    "ember-intercom-io": "^0.1.3",
    "ember-intl": "^2.23.1",
    "ember-intl-cp-validations": "^3.0.1",
    "ember-load-initializers": "^1.0.0",
    "ember-math-helpers": "^2.0.5",
    "ember-modal-dialog": "^2.3.0",
    "ember-moment": "7.4.1",
    "ember-multiselect-checkboxes": "^0.10.3",
    "ember-power-select": "^1.8.2",
    "ember-promise-helpers": "^1.0.3",
    "ember-radio-button": "1.1.1",
    "ember-resolver": "^4.1.0",
    "ember-responsive": "2.0.4",
    "ember-rl-dropdown": "^0.10.1",
    "ember-route-action-helper": "^2.0.3",
    "ember-simple-auth": "1.4.0",
    "ember-sinon": "1.0.1",
    "ember-sinon-qunit": "2.0.0",
    "ember-sliding-sticky": "^1.0.0",
    "ember-source": "^2.13.0",
    "ember-svg-jar": "^0.11.1",
    "ember-test-selectors": "0.3.7",
    "ember-truth-helpers": "1.3.0",
    "ember-uploader": "^1.2.2",
    "ember-watson": "^0.9.1",
    "eonasdan-bootstrap-datetimepicker": "~4.17.42",
    "loader.js": "^4.4.0",
    "modal-dialog": "1.6.3",
    "yuidoc-ember-theme": "^1.3.0"
  },
  "dependencies": {
    "bootstrap-sass": "^3.3.7",
    "broccoli-funnel": "^2.0.1",
    "font-awesome": "~4.7.0",
    "jquery.inputmask": "3.3.4",
    "moment": "~2.18.1",
    "moment-timezone": "0.5.13"
  }

我强烈认为您的问题是 ember-cli-bootstrap-datepicker。此插件在安装期间会 add the bootstrap-datepicker bower package,没有它可能不应该使用。

就我个人而言,如果您正在寻找 ember DatePicker,我推荐 ember-pikaday

如果您需要有关插件的建议,我推荐 ember observer, or ask in the slack channel references on the community page.